Skip to content

Instantly share code, notes, and snippets.

@kgilpin
Created November 29, 2022 18:55
Show Gist options
  • Save kgilpin/82a8032d02db72741a2c052f3c23516c to your computer and use it in GitHub Desktop.
Save kgilpin/82a8032d02db72741a2c052f3c23516c to your computer and use it in GitHub Desktop.
Example files from blog post "Generate sequence diagrams from runtime code analysis"
{
"events": [
{
"id": 1,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Integration::Runner",
"method_id": "before_setup",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/testing/integration.rb",
"lineno": 320,
"static": false,
"receiver": {
"class": "FollowingTest",
"object_id": 189320,
"value": "#<FollowingTest:0x00007fd8e254e490>"
}
},
{
"id": 2,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189360,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 32400,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e30a8c28>"
}
},
{
"id": 3,
"event": "return",
"thread_id": 4280,
"parent_id": 2,
"elapsed": 0.0000019999570213258266,
"elapsed_instrumentation": 0.00005100003909319639
},
{
"id": 4,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189360,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 32400,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e30a8c28>"
}
},
{
"id": 5,
"event": "return",
"thread_id": 4280,
"parent_id": 4,
"elapsed": 0.000008000002708286047,
"elapsed_instrumentation": 0.00004600000102072954,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8e30a8548 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 32440,
"size": 1
}
},
{
"id": 6,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189380,
"value": " \u001b[1m\u001b[35m (0.1ms)\u001b[0m \u001b[1m\u001b[36mbegin transaction\u001b[0m\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 7,
"event": "return",
"thread_id": 4280,
"parent_id": 6,
"elapsed": 0.00003100000321865082,
"elapsed_instrumentation": 0.00005100003909319639,
"return_value": {
"class": "Integer",
"value": "56",
"object_id": 113
}
},
{
"id": 8,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "begin transaction",
"database_type": "sqlite"
}
},
{
"id": 9,
"event": "return",
"thread_id": 4280,
"parent_id": 8,
"elapsed": 0.000193,
"elapsed_instrumentation": 0.00002500001573935151
},
{
"id": 10,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189400,
"value": "----------------------------------\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 11,
"event": "return",
"thread_id": 4280,
"parent_id": 10,
"elapsed": 0.000012999982573091984,
"elapsed_instrumentation": 0.000040000013541430235,
"return_value": {
"class": "Integer",
"value": "35",
"object_id": 71
}
},
{
"id": 12,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189420,
"value": "FollowingTest: test_followers_page\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 13,
"event": "return",
"thread_id": 4280,
"parent_id": 12,
"elapsed": 0.000010000017937272787,
"elapsed_instrumentation": 0.00003200001083314419,
"return_value": {
"class": "Integer",
"value": "35",
"object_id": 71
}
},
{
"id": 14,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189440,
"value": "----------------------------------\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 15,
"event": "return",
"thread_id": 4280,
"parent_id": 14,
"elapsed": 0.000009000010322779417,
"elapsed_instrumentation": 0.000029999995604157448,
"return_value": {
"class": "Integer",
"value": "35",
"object_id": 71
}
},
{
"id": 16,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189460,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 33500,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd902374870>"
}
},
{
"id": 17,
"event": "return",
"thread_id": 4280,
"parent_id": 16,
"elapsed": 0.000034999975468963385,
"elapsed_instrumentation": 0.00004700000863522291,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd902374460 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd9023745c8 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 33520,
"size": 2
}
},
{
"id": 18,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189460,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 33500,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd902374870>"
}
},
{
"id": 19,
"event": "return",
"thread_id": 4280,
"parent_id": 18,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000027999980375170708
},
{
"id": 20,
"event": "return",
"thread_id": 4280,
"parent_id": 1,
"elapsed": 0.000863000052049756,
"elapsed_instrumentation": 0.0000790000194683671,
"return_value": {
"class": "TrueClass",
"value": "true",
"object_id": 20
}
},
{
"id": 21,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveRecord::Relation",
"method_id": "records",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.0.4.1/lib/active_record/relation.rb",
"lineno": 249,
"static": false,
"receiver": {
"class": "ActiveRecord::Relation",
"object_id": 189480,
"value": "#<User::ActiveRecord_Relation:0x00007fd8e2536980>"
}
},
{
"id": 22,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189500,
"value": " \u001b[1m\u001b[36mUser Load (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMI (...43 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 23,
"event": "return",
"thread_id": 4280,
"parent_id": 22,
"elapsed": 0.000013999990187585354,
"elapsed_instrumentation": 0.00004600000102072954,
"return_value": {
"class": "Integer",
"value": "143",
"object_id": 287
}
},
{
"id": 24,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMIT ?",
"database_type": "sqlite"
}
},
{
"id": 25,
"event": "return",
"thread_id": 4280,
"parent_id": 24,
"elapsed": 0.000207,
"elapsed_instrumentation": 0.00001799996243789792
},
{
"id": 26,
"event": "return",
"thread_id": 4280,
"parent_id": 21,
"elapsed": 0.000450999999884516,
"elapsed_instrumentation": 0.00004700000863522291,
"return_value": {
"class": "Array",
"value": "[#<User:0x00007fd8e252f860>]",
"object_id": 189520,
"size": 1
}
},
{
"id": 27,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveRecord::Relation",
"method_id": "records",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.0.4.1/lib/active_record/relation.rb",
"lineno": 249,
"static": false,
"receiver": {
"class": "ActiveRecord::Relation",
"object_id": 189540,
"value": "#<User::ActiveRecord_Relation:0x00007fd8e252e9d8>"
}
},
{
"id": 28,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189560,
"value": " \u001b[1m\u001b[36mUser Load (0.0ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMI (...43 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 29,
"event": "return",
"thread_id": 4280,
"parent_id": 28,
"elapsed": 0.000013999990187585354,
"elapsed_instrumentation": 0.000042000028770416975,
"return_value": {
"class": "Integer",
"value": "143",
"object_id": 287
}
},
{
"id": 30,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMIT ?",
"database_type": "sqlite"
}
},
{
"id": 31,
"event": "return",
"thread_id": 4280,
"parent_id": 30,
"elapsed": 0.000131,
"elapsed_instrumentation": 0.000014999997802078724
},
{
"id": 32,
"event": "return",
"thread_id": 4280,
"parent_id": 27,
"elapsed": 0.0003819999983534217,
"elapsed_instrumentation": 0.00004800001624971628,
"return_value": {
"class": "Array",
"value": "[#<User:0x00007fd8e257fe00>]",
"object_id": 189580,
"size": 1
}
},
{
"id": 33,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189600,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 33680,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd9023975c8>"
}
},
{
"id": 34,
"event": "return",
"thread_id": 4280,
"parent_id": 33,
"elapsed": 0.0010580000234767795,
"elapsed_instrumentation": 0.00008699996396899223,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd902396bf0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902396dd0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902396f38 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902397118 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902397348 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 33900,
"size": 5
}
},
{
"id": 35,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189600,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 33680,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd9023975c8>"
}
},
{
"id": 36,
"event": "return",
"thread_id": 4280,
"parent_id": 35,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000037999998312443495
},
{
"id": 37,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack",
"path": "<internal:pack>",
"lineno": 256,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 33940,
"value": "NnnnnN",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 189620,
"value": "_|___`___\u001eF_p_G_"
}
},
{
"id": 38,
"event": "return",
"thread_id": 4280,
"parent_id": 37,
"elapsed": 0.00000400003045797348,
"elapsed_instrumentation": 0.000058999983593821526,
"return_value": {
"class": "Array",
"value": "[3061642637, 43616, 40334, 40990, 18158, 1894205403]",
"object_id": 189640,
"size": 6
}
},
{
"id": 39,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189660,
"value": "Started POST \"/login\" for 127.0.0.1 at 2022-11-27 18:05:25 -0500\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 40,
"event": "return",
"thread_id": 4280,
"parent_id": 39,
"elapsed": 0.00002400000812485814,
"elapsed_instrumentation": 0.0000439999857917428,
"return_value": {
"class": "Integer",
"value": "65",
"object_id": 131
}
},
{
"id": 41,
"event": "call",
"thread_id": 4280,
"http_server_request": {
"request_method": "POST",
"path_info": "/login",
"normalized_path_info": "/login",
"headers": {
"Host": "www.example.com",
"Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": "86"
}
},
"message": [
{
"name": "session",
"class": "ActiveSupport::HashWithIndifferentAccess",
"value": "{email=>michael@example.com, password=>[FILTERED], remember_me=>1}",
"object_id": 193500,
"properties": [
{
"name": "email",
"class": "String"
},
{
"name": "password",
"class": "String"
},
{
"name": "remember_me",
"class": "String"
}
]
},
{
"name": "controller",
"class": "String",
"value": "sessions",
"object_id": 77540
},
{
"name": "action",
"class": "String",
"value": "create",
"object_id": 77560
}
]
},
{
"id": 42,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionController::Instrumentation",
"method_id": "process_action",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/instrumentation.rb",
"lineno": 19,
"static": false,
"parameters": [
{
"name": "args",
"class": "Array",
"object_id": 189700,
"value": "[create]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "SessionsController",
"object_id": 189720,
"value": "#<SessionsController:0x00007fd8d22921f8>"
}
},
{
"id": 43,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189740,
"value": "Processing by SessionsController#create as HTML\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 44,
"event": "return",
"thread_id": 4280,
"parent_id": 43,
"elapsed": 0.000031999952625483274,
"elapsed_instrumentation": 0.00005500001134350896,
"return_value": {
"class": "Integer",
"value": "48",
"object_id": 97
}
},
{
"id": 45,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189760,
"value": " Parameters: {\"session\"=>{\"email\"=>\"michael@example.com\", \"password\"=>\"[FILTERED]\", \"remember_me\"=> (...6 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 46,
"event": "return",
"thread_id": 4280,
"parent_id": 45,
"elapsed": 0.000012000033166259527,
"elapsed_instrumentation": 0.000035999983083456755,
"return_value": {
"class": "Integer",
"value": "106",
"object_id": 213
}
},
{
"id": 47,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189780,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 74860,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e22fcfc0>"
}
},
{
"id": 48,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 8406428,
"value": ":_turbolinks_location",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 189800,
"value": "#<ActionDispatch::Request::Session:0x00007fd8d22936c0>"
}
},
{
"id": 49,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "update",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 333,
"static": false,
"parameters": [
{
"name": "other_hash",
"class": "Hash",
"object_id": 189820,
"value": "{}",
"kind": "req",
"size": 0
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 189840,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd902277e40>"
}
},
{
"id": 50,
"event": "return",
"thread_id": 4280,
"parent_id": 49,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000055999960750341415,
"return_value": {
"class": "ActionDispatch::Cookies::CookieJar",
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd902277e40>",
"object_id": 189840
}
},
{
"id": 51,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 317,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 41900,
"value": "_sample_app_session",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 189840,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd902277e40>"
}
},
{
"id": 52,
"event": "return",
"thread_id": 4280,
"parent_id": 51,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00002900004619732499
},
{
"id": 53,
"event": "return",
"thread_id": 4280,
"parent_id": 48,
"elapsed": 0.0003309999592602253,
"elapsed_instrumentation": 0.00003300001844763756
},
{
"id": 54,
"event": "return",
"thread_id": 4280,
"parent_id": 47,
"elapsed": 0.0005119999987073243,
"elapsed_instrumentation": 0.000063000014051795,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8e22fc7a0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e22fcb60 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e22fcd18 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 74940,
"size": 3
}
},
{
"id": 55,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsController",
"method_id": "create",
"path": "app/controllers/sessions_controller.rb",
"lineno": 9,
"static": false,
"receiver": {
"class": "SessionsController",
"object_id": 189720,
"value": "#<SessionsController:0x00007fd8d22921f8>"
}
},
{
"id": 56,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 189860,
"value": " \u001b[1m\u001b[36mUser Load (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" WHERE \"users\".\"email\" = ? L (...61 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 57,
"event": "return",
"thread_id": 4280,
"parent_id": 56,
"elapsed": 0.00002099998528137803,
"elapsed_instrumentation": 0.00004499999340623617,
"return_value": {
"class": "Integer",
"value": "161",
"object_id": 323
}
},
{
"id": 58,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"email\" = ? LIMIT ?",
"database_type": "sqlite"
}
},
{
"id": 59,
"event": "return",
"thread_id": 4280,
"parent_id": 58,
"elapsed": 0.000207,
"elapsed_instrumentation": 0.000027999980375170708
},
{
"id": 60,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 11640668,
"value": ":forwarding_url",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 189800,
"value": "#<ActionDispatch::Request::Session:0x00007fd8d22936c0>"
}
},
{
"id": 61,
"event": "return",
"thread_id": 4280,
"parent_id": 60,
"elapsed": 0.000008000002708286047,
"elapsed_instrumentation": 0.000043000036384910345
},
{
"id": 62,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "destroy",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 79,
"static": false,
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 189800,
"value": "#<ActionDispatch::Request::Session:0x00007fd8d22936c0>"
}
},
{
"id": 63,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "clear",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 137,
"static": false,
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 189800,
"value": "#<ActionDispatch::Request::Session:0x00007fd8d22936c0>"
}
},
{
"id": 64,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack",
"path": "<internal:pack>",
"lineno": 256,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 42120,
"value": "H*",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 189880,
"value": "\u0011____\u0011_sTT___1\u000f_"
}
},
{
"id": 65,
"event": "return",
"thread_id": 4280,
"parent_id": 64,
"elapsed": 0.0000029999646358191967,
"elapsed_instrumentation": 0.00004700000863522291,
"return_value": {
"class": "Array",
"value": "[11afed8fba1190735454bfdca9310ffc]",
"object_id": 189900,
"size": 1
}
},
{
"id": 66,
"event": "return",
"thread_id": 4280,
"parent_id": 63,
"elapsed": 0.00007700000423938036,
"elapsed_instrumentation": 0.00002300000051036477
},
{
"id": 67,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack",
"path": "<internal:pack>",
"lineno": 256,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 42120,
"value": "H*",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 189940,
"value": "___T_1___\u0012_='8__"
}
},
{
"id": 68,
"event": "return",
"thread_id": 4280,
"parent_id": 67,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000034999975468963385,
"return_value": {
"class": "Array",
"value": "[fda2e954db318bc48712f13d2738acbb]",
"object_id": 189960,
"size": 1
}
},
{
"id": 69,
"event": "return",
"thread_id": 4280,
"parent_id": 62,
"elapsed": 0.00015599996550008655,
"elapsed_instrumentation": 0.00002600002335384488,
"return_value": {
"class": "TrueClass",
"value": "true",
"object_id": 20
}
},
{
"id": 70,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "log_in",
"path": "app/helpers/sessions_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 189980,
"value": "#<User:0x00007fd90226c838>",
"kind": "req"
}
],
"receiver": {
"class": "SessionsController",
"object_id": 189720,
"value": "#<SessionsController:0x00007fd8d22921f8>"
}
},
{
"id": 71,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]=",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 131,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
},
{
"name": "value",
"class": "Integer",
"object_id": 1524292223,
"value": "762146111",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 189800,
"value": "#<ActionDispatch::Request::Session:0x00007fd8d22936c0>"
}
},
{
"id": 72,
"event": "return",
"thread_id": 4280,
"parent_id": 71,
"elapsed": 0.00000300002284348011,
"elapsed_instrumentation": 0.000032999960239976645,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 73,
"event": "return",
"thread_id": 4280,
"parent_id": 70,
"elapsed": 0.00005099998088553548,
"elapsed_instrumentation": 0.00004099996294826269,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 74,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "remember",
"path": "app/helpers/sessions_helper.rb",
"lineno": 9,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 189980,
"value": "#<User:0x00007fd90226c838>",
"kind": "req"
}
],
"receiver": {
"class": "SessionsController",
"object_id": 189720,
"value": "#<SessionsController:0x00007fd8d22921f8>"
}
},
{
"id": 75,
"event": "call",
"thread_id": 4280,
"defined_class": "User",
"method_id": "remember",
"path": "app/models/user.rb",
"lineno": 45,
"static": false,
"receiver": {
"class": "User",
"object_id": 189980,
"value": "#<User:0x00007fd90226c838>"
}
},
{
"id": 76,
"event": "call",
"thread_id": 4280,
"defined_class": "User",
"method_id": "new_remember_token",
"path": "app/models/user.rb",
"lineno": 30,
"static": true,
"receiver": {
"class": "Class",
"object_id": 28300,
"value": "User"
}
},
{
"id": 77,
"event": "return",
"thread_id": 4280,
"parent_id": 76,
"elapsed": 0.000009000010322779417,
"elapsed_instrumentation": 0.000032999960239976645,
"return_value": {
"class": "String",
"value": "5RxepRh3qhqPUDzBRJVesQ",
"object_id": 190000
}
},
{
"id": 78,
"event": "call",
"thread_id": 4280,
"defined_class": "User",
"method_id": "digest",
"path": "app/models/user.rb",
"lineno": 23,
"static": true,
"parameters": [
{
"name": "string",
"class": "String",
"object_id": 190000,
"value": "5RxepRh3qhqPUDzBRJVesQ",
"kind": "req"
}
],
"receiver": {
"class": "Class",
"object_id": 28300,
"value": "User"
}
},
{
"id": 79,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Random",
"method_id": "random_bytes",
"path": "OpenSSL::Random.random_bytes",
"static": true,
"parameters": [
{
"name": "arg",
"class": "Integer",
"object_id": 33,
"value": "16",
"kind": "req"
}
],
"receiver": {
"class": "Module",
"object_id": 28540,
"value": "OpenSSL::Random"
}
},
{
"id": 80,
"event": "return",
"thread_id": 4280,
"parent_id": 79,
"elapsed": 0.000013999990187585354,
"elapsed_instrumentation": 0.00003600004129111767,
"return_value": {
"class": "String",
"value": "g_____t\"___k__8(",
"object_id": 190020
}
},
{
"id": 81,
"event": "return",
"thread_id": 4280,
"parent_id": 78,
"elapsed": 0.0015920000150799751,
"elapsed_instrumentation": 0.00003200001083314419,
"return_value": {
"class": "BCrypt::Password",
"value": "$2a$04$X8dkhD84bAJMpZzp8tm2I.UALJNeScSeE1hht8dtasQdAWKRuAzVe",
"object_id": 190040
}
},
{
"id": 82,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190060,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 75180,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e31d59c0>"
}
},
{
"id": 83,
"event": "return",
"thread_id": 4280,
"parent_id": 82,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000028999987989664078
},
{
"id": 84,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190060,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 75220,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e31d6348>"
}
},
{
"id": 85,
"event": "return",
"thread_id": 4280,
"parent_id": 84,
"elapsed": 0.000018000020645558834,
"elapsed_instrumentation": 0.00003699993249028921,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8e31d5cb8 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 75240,
"size": 1
}
},
{
"id": 86,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190080,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 75280,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e31c93f0>"
}
},
{
"id": 87,
"event": "return",
"thread_id": 4280,
"parent_id": 86,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00003300001844763756
},
{
"id": 88,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 190100,
"value": " \u001b[1m\u001b[35m (0.1ms)\u001b[0m \u001b[1m\u001b[35mSAVEPOINT active_record_1\u001b[0m\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 89,
"event": "return",
"thread_id": 4280,
"parent_id": 88,
"elapsed": 0.00002500001573935151,
"elapsed_instrumentation": 0.00004299997817724943,
"return_value": {
"class": "Integer",
"value": "64",
"object_id": 129
}
},
{
"id": 90,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SAVEPOINT active_record_1",
"database_type": "sqlite"
}
},
{
"id": 91,
"event": "return",
"thread_id": 4280,
"parent_id": 90,
"elapsed": 0.000162,
"elapsed_instrumentation": 0.000019000028260052204
},
{
"id": 92,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 190120,
"value": " \u001b[1m\u001b[36mUser Update (0.3ms)\u001b[0m \u001b[1m\u001b[33mUPDATE \"users\" SET \"remember_digest\" = ?, \"updated_at\" (...183 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 93,
"event": "return",
"thread_id": 4280,
"parent_id": 92,
"elapsed": 0.000011000025551766157,
"elapsed_instrumentation": 0.00015899993013590574,
"return_value": {
"class": "Integer",
"value": "283",
"object_id": 567
}
},
{
"id": 94,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "UPDATE \"users\" SET \"remember_digest\" = ?, \"updated_at\" = ? WHERE \"users\".\"id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 95,
"event": "return",
"thread_id": 4280,
"parent_id": 94,
"elapsed": 0.000495,
"elapsed_instrumentation": 0.000014999997802078724
},
{
"id": 96,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190080,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 75280,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e31c93f0>"
}
},
{
"id": 97,
"event": "return",
"thread_id": 4280,
"parent_id": 96,
"elapsed": 0.000044000043999403715,
"elapsed_instrumentation": 0.00006900000153109431,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8e31c90d0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e31c8d10 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e31c8ab8 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e31c87c0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e31c8568 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 75420,
"size": 5
}
},
{
"id": 98,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190060,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 75220,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e31d6348>"
}
},
{
"id": 99,
"event": "return",
"thread_id": 4280,
"parent_id": 98,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000028999987989664078
},
{
"id": 100,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190060,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 75180,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e31d59c0>"
}
},
{
"id": 101,
"event": "return",
"thread_id": 4280,
"parent_id": 100,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000025999965146183968
},
{
"id": 102,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 190140,
"value": " \u001b[1m\u001b[35m (0.0ms)\u001b[0m \u001b[1m\u001b[35mRELEASE SAVEPOINT active_record_1\u001b[0m\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 103,
"event": "return",
"thread_id": 4280,
"parent_id": 102,
"elapsed": 0.000011999974958598614,
"elapsed_instrumentation": 0.00003300001844763756,
"return_value": {
"class": "Integer",
"value": "72",
"object_id": 145
}
},
{
"id": 104,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "RELEASE SAVEPOINT active_record_1",
"database_type": "sqlite"
}
},
{
"id": 105,
"event": "return",
"thread_id": 4280,
"parent_id": 104,
"elapsed": 0.000105,
"elapsed_instrumentation": 0.000013999990187585354
},
{
"id": 106,
"event": "return",
"thread_id": 4280,
"parent_id": 75,
"elapsed": 0.003437999985180795,
"elapsed_instrumentation": 0.000024999957531690598,
"return_value": {
"class": "TrueClass",
"value": "true",
"object_id": 20
}
},
{
"id": 107,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Generator::State",
"method_id": "generate",
"path": "JSON::Ext::Generator::State#generate",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Integer",
"object_id": 1524292223,
"value": "762146111",
"kind": "req"
}
],
"receiver": {
"class": "JSON::Ext::Generator::State",
"object_id": 190160,
"value": "#<JSON::Ext::Generator::State:0x00007fd90229cf38>"
}
},
{
"id": 108,
"event": "return",
"thread_id": 4280,
"parent_id": 107,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.000039000005926936865,
"return_value": {
"class": "String",
"value": "762146111",
"object_id": 190180
}
},
{
"id": 109,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::MessageEncryptor",
"method_id": "encrypt_and_sign",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/message_encryptor.rb",
"lineno": 150,
"static": false,
"parameters": [
{
"name": "value",
"class": "String",
"object_id": 190180,
"value": "762146111",
"kind": "req"
},
{
"name": "expires_at",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "key"
},
{
"name": "expires_in",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "key"
},
{
"name": "purpose",
"class": "String",
"object_id": 190200,
"value": "cookie.user_id",
"kind": "key"
}
],
"receiver": {
"class": "ActiveSupport::MessageEncryptor",
"object_id": 190220,
"value": "#<ActiveSupport::MessageEncryptor:0x00007fd90229d6b8>"
}
},
{
"id": 110,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "encrypt",
"path": "OpenSSL::Cipher#encrypt",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 190240,
"value": "[]",
"kind": "rest",
"size": 0
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>",
"labels": [
"crypto.algorithm.id-aes256-GCM"
]
}
},
{
"id": 111,
"event": "return",
"thread_id": 4280,
"parent_id": 110,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000041000021155923605,
"return_value": {
"class": "OpenSSL::Cipher",
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>",
"object_id": 190260
}
},
{
"id": 112,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "key=",
"path": "OpenSSL::Cipher#key=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 41800,
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>"
}
},
{
"id": 113,
"event": "return",
"thread_id": 4280,
"parent_id": 112,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.0000439999857917428,
"return_value": {
"class": "String",
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"object_id": 41800
}
},
{
"id": 114,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "random_iv",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/openssl/cipher.rb",
"lineno": 55,
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>"
}
},
{
"id": 115,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Random",
"method_id": "random_bytes",
"path": "OpenSSL::Random.random_bytes",
"static": true,
"parameters": [
{
"name": "arg",
"class": "Integer",
"object_id": 25,
"value": "12",
"kind": "req"
}
],
"receiver": {
"class": "Module",
"object_id": 28540,
"value": "OpenSSL::Random"
}
},
{
"id": 116,
"event": "return",
"thread_id": 4280,
"parent_id": 115,
"elapsed": 0.000005999987479299307,
"elapsed_instrumentation": 0.00003100000321865082,
"return_value": {
"class": "String",
"value": "H__Hr_o__P__",
"object_id": 190280
}
},
{
"id": 117,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "iv=",
"path": "OpenSSL::Cipher#iv=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 190280,
"value": "H__Hr_o__P__",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>"
}
},
{
"id": 118,
"event": "return",
"thread_id": 4280,
"parent_id": 117,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000031999952625483274,
"return_value": {
"class": "String",
"value": "H__Hr_o__P__",
"object_id": 190280
}
},
{
"id": 119,
"event": "return",
"thread_id": 4280,
"parent_id": 114,
"elapsed": 0.00008299999171867967,
"elapsed_instrumentation": 0.00002500001573935151,
"return_value": {
"class": "String",
"value": "H__Hr_o__P__",
"object_id": 190280
}
},
{
"id": 120,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "auth_data=",
"path": "OpenSSL::Cipher#auth_data=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 42340,
"value": "",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>"
}
},
{
"id": 121,
"event": "return",
"thread_id": 4280,
"parent_id": 120,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000024999957531690598,
"return_value": {
"class": "String",
"value": "",
"object_id": 42340
}
},
{
"id": 122,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Generator::State",
"method_id": "generate",
"path": "JSON::Ext::Generator::State#generate",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Hash",
"object_id": 190300,
"value": "{_rails=>{message=>NzYyMTQ2MTEx, exp=>, pur=>cookie.user_id}}",
"kind": "req",
"size": 1
}
],
"receiver": {
"class": "JSON::Ext::Generator::State",
"object_id": 190320,
"value": "#<JSON::Ext::Generator::State:0x00007fd90228dcb8>"
}
},
{
"id": 123,
"event": "return",
"thread_id": 4280,
"parent_id": 122,
"elapsed": 0.000019000028260052204,
"elapsed_instrumentation": 0.000056999968364834785,
"return_value": {
"class": "String",
"value": "{\"_rails\":{\"message\":\"NzYyMTQ2MTEx\",\"exp\":null,\"pur\":\"cookie.user_id\"}}",
"object_id": 190340
}
},
{
"id": 124,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "update",
"path": "OpenSSL::Cipher#update",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 190360,
"value": "[{\"_rails\":{\"message\":\"NzYyMTQ2MTEx\",\"exp\":null,\"pur\":\"cookie.user_id\"}}]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>"
}
},
{
"id": 125,
"event": "return",
"thread_id": 4280,
"parent_id": 124,
"elapsed": 0.00000400003045797348,
"elapsed_instrumentation": 0.00003799994010478258,
"return_value": {
"class": "String",
"value": "__L_\u0006_+_______YA8___X_@tq0M_\u0004__#__J__<__\u000e<_\r___|y[_q__y~__C_\u0019$_\"_/_.O_",
"object_id": 190380
}
},
{
"id": 126,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "final",
"path": "OpenSSL::Cipher#final",
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190260,
"value": "#<OpenSSL::Cipher:0x00007fd9022972e0>"
}
},
{
"id": 127,
"event": "return",
"thread_id": 4280,
"parent_id": 126,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.00002099998528137803,
"return_value": {
"class": "String",
"value": "",
"object_id": 190400
}
},
{
"id": 128,
"event": "return",
"thread_id": 4280,
"parent_id": 109,
"elapsed": 0.0004379999591037631,
"elapsed_instrumentation": 0.00004600000102072954,
"return_value": {
"class": "String",
"value": "yNFMwQbaK5eOsKWJmNFZQTityIxYyUB0cTBNlgSlqyOpgUqM6DyIkQ48tQ3Y2/h8eVvjcbHXeX7B4kOkfxkknSK5L7QuT94=--SO (...40 more characters)",
"object_id": 190420
}
},
{
"id": 129,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "[]=",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 373,
"static": false,
"parameters": [
{
"name": "name",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 190440,
"value": "{:value=>yNFMwQbaK5eOsKWJmNFZQTityIxYyUB0cTBNlgSlqyOpgUqM6DyIkQ48tQ3Y2/h8eVvjcbHXeX7B4kOkfxkknSK5L7QuT94=--SO (...40 more characters), :expires=>2042-11-27 23:05:25 UTC}",
"kind": "req",
"size": 2
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 189840,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd902277e40>"
}
},
{
"id": 130,
"event": "return",
"thread_id": 4280,
"parent_id": 129,
"elapsed": 0.000008000002708286047,
"elapsed_instrumentation": 0.000063000014051795,
"return_value": {
"class": "String",
"value": "yNFMwQbaK5eOsKWJmNFZQTityIxYyUB0cTBNlgSlqyOpgUqM6DyIkQ48tQ3Y2/h8eVvjcbHXeX7B4kOkfxkknSK5L7QuT94=--SO (...40 more characters)",
"object_id": 190420
}
},
{
"id": 131,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "[]=",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 373,
"static": false,
"parameters": [
{
"name": "name",
"class": "Symbol",
"object_id": 11639068,
"value": ":remember_token",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 190460,
"value": "{:value=>5RxepRh3qhqPUDzBRJVesQ, :expires=>2042-11-27 23:05:25 UTC}",
"kind": "req",
"size": 2
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 189840,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd902277e40>"
}
},
{
"id": 132,
"event": "return",
"thread_id": 4280,
"parent_id": 131,
"elapsed": 0.000005999987479299307,
"elapsed_instrumentation": 0.00004800001624971628,
"return_value": {
"class": "String",
"value": "5RxepRh3qhqPUDzBRJVesQ",
"object_id": 190000
}
},
{
"id": 133,
"event": "return",
"thread_id": 4280,
"parent_id": 74,
"elapsed": 0.004321000014897436,
"elapsed_instrumentation": 0.000035999983083456755,
"return_value": {
"class": "String",
"value": "5RxepRh3qhqPUDzBRJVesQ",
"object_id": 190000
}
},
{
"id": 134,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionController::Instrumentation",
"method_id": "redirect_to",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/instrumentation.rb",
"lineno": 62,
"static": false,
"parameters": [
{
"name": "args",
"class": "Array",
"object_id": 190480,
"value": "[#<User:0x00007fd90226c838>, {}]",
"kind": "rest",
"size": 2
}
],
"receiver": {
"class": "SessionsController",
"object_id": 189720,
"value": "#<SessionsController:0x00007fd8d22921f8>"
}
},
{
"id": 135,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 190500,
"value": "Redirected to http://www.example.com/users/762146111\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 136,
"event": "return",
"thread_id": 4280,
"parent_id": 135,
"elapsed": 0.000013000040780752897,
"elapsed_instrumentation": 0.00004099996294826269,
"return_value": {
"class": "Integer",
"value": "53",
"object_id": 107
}
},
{
"id": 137,
"event": "return",
"thread_id": 4280,
"parent_id": 134,
"elapsed": 0.0002649999805726111,
"elapsed_instrumentation": 0.00005900004180148244,
"return_value": {
"class": "String",
"value": "<html><body>You are being <a href=\"http://www.example.com/users/762146111\">redirected</a>.</body></h (...4 more characters)",
"object_id": 190520
}
},
{
"id": 138,
"event": "return",
"thread_id": 4280,
"parent_id": 55,
"elapsed": 0.007133000006433576,
"elapsed_instrumentation": 0.00014600006397813559,
"return_value": {
"class": "String",
"value": "<html><body>You are being <a href=\"http://www.example.com/users/762146111\">redirected</a>.</body></h (...4 more characters)",
"object_id": 190520
}
},
{
"id": 139,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 189780,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 74860,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e22fcfc0>"
}
},
{
"id": 140,
"event": "return",
"thread_id": 4280,
"parent_id": 139,
"elapsed": 0.000008999952115118504,
"elapsed_instrumentation": 0.000043000036384910345,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8e22fc9d0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 75880,
"size": 1
}
},
{
"id": 141,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 190540,
"value": "Completed 302 Found in 8ms (ActiveRecord: 0.4ms | Allocations: 4993)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 142,
"event": "return",
"thread_id": 4280,
"parent_id": 141,
"elapsed": 0.000010999967344105244,
"elapsed_instrumentation": 0.00003200001083314419,
"return_value": {
"class": "Integer",
"value": "69",
"object_id": 139
}
},
{
"id": 143,
"event": "return",
"thread_id": 4280,
"parent_id": 42,
"elapsed": 0.008383999986108392,
"elapsed_instrumentation": 0.00008900003740563989,
"return_value": {
"class": "String",
"value": "<html><body>You are being <a href=\"http://www.example.com/users/762146111\">redirected</a>.</body></h (...4 more characters)",
"object_id": 190520
}
},
{
"id": 144,
"event": "return",
"thread_id": 4280,
"parent_id": 41,
"elapsed_instrumentation": 0.00021899997955188155,
"http_server_response": {
"headers": {
"X-Frame-Options": "SAMEORIGIN",
"X-XSS-Protection": "1; mode=block",
"X-Content-Type-Options": "nosniff",
"X-Download-Options": "noopen",
"X-Permitted-Cross-Domain-Policies": "none",
"Referrer-Policy": "strict-origin-when-cross-origin",
"Location": "http://www.example.com/users/762146111"
},
"status": 302
}
},
{
"id": 145,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Generator::State",
"method_id": "generate",
"path": "JSON::Ext::Generator::State#generate",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Hash",
"object_id": 190560,
"value": "{session_id=>fda2e954db318bc48712f13d2738acbb, user_id=>762146111}",
"kind": "req",
"size": 2
}
],
"receiver": {
"class": "JSON::Ext::Generator::State",
"object_id": 190580,
"value": "#<JSON::Ext::Generator::State:0x00007fd9022dcb10>"
}
},
{
"id": 146,
"event": "return",
"thread_id": 4280,
"parent_id": 145,
"elapsed": 0.000012999982573091984,
"elapsed_instrumentation": 0.00005199998850002885,
"return_value": {
"class": "String",
"value": "{\"session_id\":\"fda2e954db318bc48712f13d2738acbb\",\"user_id\":762146111}",
"object_id": 190600
}
},
{
"id": 147,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::MessageEncryptor",
"method_id": "encrypt_and_sign",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/message_encryptor.rb",
"lineno": 150,
"static": false,
"parameters": [
{
"name": "value",
"class": "String",
"object_id": 190600,
"value": "{\"session_id\":\"fda2e954db318bc48712f13d2738acbb\",\"user_id\":762146111}",
"kind": "req"
},
{
"name": "expires_at",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "key"
},
{
"name": "expires_in",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "key"
},
{
"name": "purpose",
"class": "String",
"object_id": 190620,
"value": "cookie._sample_app_session",
"kind": "key"
}
],
"receiver": {
"class": "ActiveSupport::MessageEncryptor",
"object_id": 190640,
"value": "#<ActiveSupport::MessageEncryptor:0x00007fd902276630>"
}
},
{
"id": 148,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "encrypt",
"path": "OpenSSL::Cipher#encrypt",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 190660,
"value": "[]",
"kind": "rest",
"size": 0
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>",
"labels": [
"crypto.algorithm.id-aes256-GCM"
]
}
},
{
"id": 149,
"event": "return",
"thread_id": 4280,
"parent_id": 148,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000034999975468963385,
"return_value": {
"class": "OpenSSL::Cipher",
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>",
"object_id": 190680
}
},
{
"id": 150,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "key=",
"path": "OpenSSL::Cipher#key=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 41800,
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>"
}
},
{
"id": 151,
"event": "return",
"thread_id": 4280,
"parent_id": 150,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.00003799994010478258,
"return_value": {
"class": "String",
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"object_id": 41800
}
},
{
"id": 152,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "random_iv",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/openssl/cipher.rb",
"lineno": 55,
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>"
}
},
{
"id": 153,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Random",
"method_id": "random_bytes",
"path": "OpenSSL::Random.random_bytes",
"static": true,
"parameters": [
{
"name": "arg",
"class": "Integer",
"object_id": 25,
"value": "12",
"kind": "req"
}
],
"receiver": {
"class": "Module",
"object_id": 28540,
"value": "OpenSSL::Random"
}
},
{
"id": 154,
"event": "return",
"thread_id": 4280,
"parent_id": 153,
"elapsed": 0.000004999979864805937,
"elapsed_instrumentation": 0.00003000005381181836,
"return_value": {
"class": "String",
"value": "\u000b_\u0012_54W@q4ak",
"object_id": 190700
}
},
{
"id": 155,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "iv=",
"path": "OpenSSL::Cipher#iv=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 190700,
"value": "\u000b_\u0012_54W@q4ak",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>"
}
},
{
"id": 156,
"event": "return",
"thread_id": 4280,
"parent_id": 155,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00003300001844763756,
"return_value": {
"class": "String",
"value": "\u000b_\u0012_54W@q4ak",
"object_id": 190700
}
},
{
"id": 157,
"event": "return",
"thread_id": 4280,
"parent_id": 152,
"elapsed": 0.00007899996126070619,
"elapsed_instrumentation": 0.00002300000051036477,
"return_value": {
"class": "String",
"value": "\u000b_\u0012_54W@q4ak",
"object_id": 190700
}
},
{
"id": 158,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "auth_data=",
"path": "OpenSSL::Cipher#auth_data=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 42340,
"value": "",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>"
}
},
{
"id": 159,
"event": "return",
"thread_id": 4280,
"parent_id": 158,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000025999965146183968,
"return_value": {
"class": "String",
"value": "",
"object_id": 42340
}
},
{
"id": 160,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Generator::State",
"method_id": "generate",
"path": "JSON::Ext::Generator::State#generate",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Hash",
"object_id": 190720,
"value": "{_rails=>{message=>eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIjo3NjIxNDYxMTF9, exp=>, pur=>cookie._sample_app_session}}",
"kind": "req",
"size": 1
}
],
"receiver": {
"class": "JSON::Ext::Generator::State",
"object_id": 190740,
"value": "#<JSON::Ext::Generator::State:0x00007fd9022bf600>"
}
},
{
"id": 161,
"event": "return",
"thread_id": 4280,
"parent_id": 160,
"elapsed": 0.000017000013031065464,
"elapsed_instrumentation": 0.000053999945521354675,
"return_value": {
"class": "String",
"value": "{\"_rails\":{\"message\":\"eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIj (...63 more characters)",
"object_id": 190760
}
},
{
"id": 162,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "update",
"path": "OpenSSL::Cipher#update",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 190780,
"value": "[{\"_rails\":{\"message\":\"eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIj (...63 more characters)]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>"
}
},
{
"id": 163,
"event": "return",
"thread_id": 4280,
"parent_id": 162,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.00004299997817724943,
"return_value": {
"class": "String",
"value": "_____1__6\u000f____?_zt<_S__\u001dwpC_\u0013@_\u0003_\u001f=_1_j_\u0015CU_u_\u001b___h_\t_________.__lM\u0007_6_____lz3_&_\u001a-ii_5;____-sLZ___ (...63 more characters)",
"object_id": 190800
}
},
{
"id": 164,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "final",
"path": "OpenSSL::Cipher#final",
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 190680,
"value": "#<OpenSSL::Cipher:0x00007fd9022d4b18>"
}
},
{
"id": 165,
"event": "return",
"thread_id": 4280,
"parent_id": 164,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.0000219999928958714,
"return_value": {
"class": "String",
"value": "",
"object_id": 190820
}
},
{
"id": 166,
"event": "return",
"thread_id": 4280,
"parent_id": 147,
"elapsed": 0.00040600000647827983,
"elapsed_instrumentation": 0.000041000021155923605,
"return_value": {
"class": "String",
"value": "8r+bvfQxvso2D5nZlKM/p3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8+moLCL3vYu4NhsTQd/oTacr8yA (...164 more characters)",
"object_id": 190840
}
},
{
"id": 167,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "[]=",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 373,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 41900,
"value": "_sample_app_session",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 190860,
"value": "{:value=>8r+bvfQxvso2D5nZlKM/p3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8+moLCL3vYu4NhsTQd/oTacr8yA (...164 more characters), :same_site=>, :path=>/, :domain=>, :expire_after=>, :secure=>false, :httponly=>true, :defer=>false, :renew=>false, :id=>fda2e954db318bc48712f13d2738acbb}",
"kind": "req",
"size": 10
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 189840,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd902277e40>"
}
},
{
"id": 168,
"event": "return",
"thread_id": 4280,
"parent_id": 167,
"elapsed": 0.000010000017937272787,
"elapsed_instrumentation": 0.0000879999715834856,
"return_value": {
"class": "String",
"value": "8r+bvfQxvso2D5nZlKM/p3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8+moLCL3vYu4NhsTQd/oTacr8yA (...164 more characters)",
"object_id": 190840
}
},
{
"id": 169,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190880,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 42560,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd92114ea68>"
}
},
{
"id": 170,
"event": "return",
"thread_id": 4280,
"parent_id": 169,
"elapsed": 0.00004499999340623617,
"elapsed_instrumentation": 0.0000570000265724957,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd92114e310 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd92114e478 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd92114e658 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 42580,
"size": 3
}
},
{
"id": 171,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190880,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 42560,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd92114ea68>"
}
},
{
"id": 172,
"event": "return",
"thread_id": 4280,
"parent_id": 171,
"elapsed": 0.000009000010322779417,
"elapsed_instrumentation": 0.000036999990697950125,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd92114e7c0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 42600,
"size": 1
}
},
{
"id": 173,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190920,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 33680,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd9023975c8>"
}
},
{
"id": 174,
"event": "return",
"thread_id": 4280,
"parent_id": 173,
"elapsed": 0.0010060000349767506,
"elapsed_instrumentation": 0.00008299993351101875,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd902396bf0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902396dd0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902396f38 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902397118 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd902397348 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 33900,
"size": 5
}
},
{
"id": 175,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 190920,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 33680,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd9023975c8>"
}
},
{
"id": 176,
"event": "return",
"thread_id": 4280,
"parent_id": 175,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000035999983083456755
},
{
"id": 177,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack",
"path": "<internal:pack>",
"lineno": 256,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 33940,
"value": "NnnnnN",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 190940,
"value": "Q_]L____\u001d_\u001eJ_24_"
}
},
{
"id": 178,
"event": "return",
"thread_id": 4280,
"parent_id": 177,
"elapsed": 0.00000300002284348011,
"elapsed_instrumentation": 0.00004899996565654874,
"return_value": {
"class": "Array",
"value": "[1374051660, 45765, 56241, 7675, 7754, 2452763849]",
"object_id": 190960,
"size": 6
}
},
{
"id": 179,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 190980,
"value": "Started GET \"/users/762146111/followers\" for 127.0.0.1 at 2022-11-27 18:05:25 -0500\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 180,
"event": "return",
"thread_id": 4280,
"parent_id": 179,
"elapsed": 0.000019000028260052204,
"elapsed_instrumentation": 0.00003899994771927595,
"return_value": {
"class": "Integer",
"value": "84",
"object_id": 169
}
},
{
"id": 181,
"event": "call",
"thread_id": 4280,
"http_server_request": {
"request_method": "GET",
"path_info": "/users/762146111/followers",
"normalized_path_info": "/users/{id}/followers",
"headers": {
"Host": "www.example.com",
"Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Cookie": "_sample_app_session=8r%2BbvfQxvso2D5nZlKM%2Fp3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8%2BmoLCL3vYu4NhsTQd%2FoTacr8yA%2B2x6M%2B0mvRotaWnaNTvA0MHPLXNMWtaggxVGFTAhboOtCaugyNEKd7AB08DkM3WA7PIIi9lZlIEXsB5YClJkYLYxltECoqNbt3DFBornRmnJyMIV0Q9SEQ%3D%3D--C70SkjU0V0BxNGFr--f5%2BCB9tKkC6SIhI7LUVKLw%3D%3D; remember_token=5RxepRh3qhqPUDzBRJVesQ; user_id=yNFMwQbaK5eOsKWJmNFZQTityIxYyUB0cTBNlgSlqyOpgUqM6DyIkQ48tQ3Y2%2Fh8eVvjcbHXeX7B4kOkfxkknSK5L7QuT94%3D--SOHrSHK7b4a8UNGp--XL7pjtOnw8YMnZ9hEyepUw%3D%3D",
"Content-Length": "0"
}
},
"message": [
{
"name": "controller",
"class": "String",
"value": "users",
"object_id": 69900
},
{
"name": "action",
"class": "String",
"value": "followers",
"object_id": 73180
},
{
"name": "id",
"class": "String",
"value": "762146111",
"object_id": 193520
}
]
},
{
"id": 182,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionController::Instrumentation",
"method_id": "process_action",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/instrumentation.rb",
"lineno": 19,
"static": false,
"parameters": [
{
"name": "args",
"class": "Array",
"object_id": 191020,
"value": "[followers]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 183,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 191060,
"value": "Processing by UsersController#followers as HTML\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 184,
"event": "return",
"thread_id": 4280,
"parent_id": 183,
"elapsed": 0.000029999995604157448,
"elapsed_instrumentation": 0.00005199998850002885,
"return_value": {
"class": "Integer",
"value": "48",
"object_id": 97
}
},
{
"id": 185,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 191080,
"value": " Parameters: {\"id\"=>\"762146111\"}\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 186,
"event": "return",
"thread_id": 4280,
"parent_id": 185,
"elapsed": 0.000012000033166259527,
"elapsed_instrumentation": 0.00003700004890561104,
"return_value": {
"class": "Integer",
"value": "34",
"object_id": 69
}
},
{
"id": 187,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 191100,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 44620,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8d19b13e0>"
}
},
{
"id": 188,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 8406428,
"value": ":_turbolinks_location",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 189,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "update",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 333,
"static": false,
"parameters": [
{
"name": "other_hash",
"class": "Hash",
"object_id": 191140,
"value": "{_sample_app_session=>8r+bvfQxvso2D5nZlKM/p3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8+moLCL3vYu4NhsTQd/oTacr8yA (...164 more characters), remember_token=>5RxepRh3qhqPUDzBRJVesQ, user_id=>yNFMwQbaK5eOsKWJmNFZQTityIxYyUB0cTBNlgSlqyOpgUqM6DyIkQ48tQ3Y2/h8eVvjcbHXeX7B4kOkfxkknSK5L7QuT94=--SO (...40 more characters)}",
"kind": "req",
"size": 3
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 191160,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd90232e578>"
}
},
{
"id": 190,
"event": "return",
"thread_id": 4280,
"parent_id": 189,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.00006700004450976849,
"return_value": {
"class": "ActionDispatch::Cookies::CookieJar",
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd90232e578>",
"object_id": 191160
}
},
{
"id": 191,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 317,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 41900,
"value": "_sample_app_session",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 191160,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd90232e578>"
}
},
{
"id": 192,
"event": "return",
"thread_id": 4280,
"parent_id": 191,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.00003700004890561104,
"return_value": {
"class": "String",
"value": "8r+bvfQxvso2D5nZlKM/p3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8+moLCL3vYu4NhsTQd/oTacr8yA (...164 more characters)",
"object_id": 191180
}
},
{
"id": 193,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack1",
"path": "<internal:pack>",
"lineno": 280,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 76560,
"value": "m0",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 191200,
"value": "8r+bvfQxvso2D5nZlKM/p3p0PMNTl9Ydd3BDnBNA1QPnHz3bMcVqjRVDVdB13BvAjK9ongmfy8+moLCL3vYu4NhsTQd/oTacr8yA (...120 more characters)"
}
},
{
"id": 194,
"event": "return",
"thread_id": 4280,
"parent_id": 193,
"elapsed": 0.0000029999646358191967,
"elapsed_instrumentation": 0.00004600000102072954,
"return_value": {
"class": "String",
"value": "_____1__6\u000f____?_zt<_S__\u001dwpC_\u0013@_\u0003_\u001f=_1_j_\u0015CU_u_\u001b___h_\t_________.__lM\u0007_6_____lz3_&_\u001a-ii_5;____-sLZ___ (...63 more characters)",
"object_id": 191220
}
},
{
"id": 195,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack1",
"path": "<internal:pack>",
"lineno": 280,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 76560,
"value": "m0",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 191240,
"value": "C70SkjU0V0BxNGFr"
}
},
{
"id": 196,
"event": "return",
"thread_id": 4280,
"parent_id": 195,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000029999937396496534,
"return_value": {
"class": "String",
"value": "\u000b_\u0012_54W@q4ak",
"object_id": 191260
}
},
{
"id": 197,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack1",
"path": "<internal:pack>",
"lineno": 280,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 76560,
"value": "m0",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 191280,
"value": "f5+CB9tKkC6SIhI7LUVKLw=="
}
},
{
"id": 198,
"event": "return",
"thread_id": 4280,
"parent_id": 197,
"elapsed": 9.999494068324566e-7,
"elapsed_instrumentation": 0.00002800003858283162,
"return_value": {
"class": "String",
"value": "__\u0007_J_._\"\u0012;-EJ/",
"object_id": 191300
}
},
{
"id": 199,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "decrypt",
"path": "OpenSSL::Cipher#decrypt",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 191320,
"value": "[]",
"kind": "rest",
"size": 0
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>",
"labels": [
"crypto.algorithm.id-aes256-GCM"
]
}
},
{
"id": 200,
"event": "return",
"thread_id": 4280,
"parent_id": 199,
"elapsed": 0.0000019999570213258266,
"elapsed_instrumentation": 0.000045000051613897085,
"return_value": {
"class": "OpenSSL::Cipher",
"value": "#<OpenSSL::Cipher:0x00007fd902327188>",
"object_id": 191340
}
},
{
"id": 201,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "key=",
"path": "OpenSSL::Cipher#key=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 41800,
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>"
}
},
{
"id": 202,
"event": "return",
"thread_id": 4280,
"parent_id": 201,
"elapsed": 0.0000029999646358191967,
"elapsed_instrumentation": 0.00004000007174909115,
"return_value": {
"class": "String",
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"object_id": 41800
}
},
{
"id": 203,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "iv=",
"path": "OpenSSL::Cipher#iv=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 191260,
"value": "\u000b_\u0012_54W@q4ak",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>"
}
},
{
"id": 204,
"event": "return",
"thread_id": 4280,
"parent_id": 203,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000032999960239976645,
"return_value": {
"class": "String",
"value": "\u000b_\u0012_54W@q4ak",
"object_id": 191260
}
},
{
"id": 205,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "auth_tag=",
"path": "OpenSSL::Cipher#auth_tag=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 191300,
"value": "__\u0007_J_._\"\u0012;-EJ/",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>"
}
},
{
"id": 206,
"event": "return",
"thread_id": 4280,
"parent_id": 205,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000030999945010989904,
"return_value": {
"class": "String",
"value": "__\u0007_J_._\"\u0012;-EJ/",
"object_id": 191300
}
},
{
"id": 207,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "auth_data=",
"path": "OpenSSL::Cipher#auth_data=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 42340,
"value": "",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>"
}
},
{
"id": 208,
"event": "return",
"thread_id": 4280,
"parent_id": 207,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000026999972760677338,
"return_value": {
"class": "String",
"value": "",
"object_id": 42340
}
},
{
"id": 209,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "update",
"path": "OpenSSL::Cipher#update",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 191360,
"value": "[_____1__6\u000f____?_zt<_S__\u001dwpC_\u0013@_\u0003_\u001f=_1_j_\u0015CU_u_\u001b___h_\t_________.__lM\u0007_6_____lz3_&_\u001a-ii_5;____-sLZ___ (...63 more characters)]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>"
}
},
{
"id": 210,
"event": "return",
"thread_id": 4280,
"parent_id": 209,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.000043000036384910345,
"return_value": {
"class": "String",
"value": "{\"_rails\":{\"message\":\"eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIj (...63 more characters)",
"object_id": 191380
}
},
{
"id": 211,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "final",
"path": "OpenSSL::Cipher#final",
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 191340,
"value": "#<OpenSSL::Cipher:0x00007fd902327188>"
}
},
{
"id": 212,
"event": "return",
"thread_id": 4280,
"parent_id": 211,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00002400000812485814,
"return_value": {
"class": "String",
"value": "",
"object_id": 191400
}
},
{
"id": 213,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Parser",
"method_id": "parse",
"path": "JSON::Ext::Parser#parse",
"static": false,
"receiver": {
"class": "JSON::Ext::Parser",
"object_id": 191420,
"value": "#<JSON::Ext::Parser:0x00007fd902315d48>"
}
},
{
"id": 214,
"event": "return",
"thread_id": 4280,
"parent_id": 213,
"elapsed": 0.000005999987479299307,
"elapsed_instrumentation": 0.00004900002386420965,
"return_value": {
"class": "Hash",
"value": "{_rails=>{message=>eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIjo3NjIxNDYxMTF9, exp=>, pur=>cookie._sample_app_session}}",
"object_id": 191440,
"size": 1
}
},
{
"id": 215,
"event": "call",
"thread_id": 4280,
"defined_class": "String",
"method_id": "unpack1",
"path": "<internal:pack>",
"lineno": 280,
"static": false,
"parameters": [
{
"name": "fmt",
"class": "String",
"object_id": 76560,
"value": "m0",
"kind": "req"
}
],
"receiver": {
"class": "String",
"object_id": 191460,
"value": "eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIjo3NjIxNDYxMTF9"
}
},
{
"id": 216,
"event": "return",
"thread_id": 4280,
"parent_id": 215,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.00013800000306218863,
"return_value": {
"class": "String",
"value": "{\"session_id\":\"fda2e954db318bc48712f13d2738acbb\",\"user_id\":762146111}",
"object_id": 191480
}
},
{
"id": 217,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Parser",
"method_id": "parse",
"path": "JSON::Ext::Parser#parse",
"static": false,
"receiver": {
"class": "JSON::Ext::Parser",
"object_id": 191500,
"value": "#<JSON::Ext::Parser:0x00007fd8e32f77b8>"
}
},
{
"id": 218,
"event": "return",
"thread_id": 4280,
"parent_id": 217,
"elapsed": 0.000004999979864805937,
"elapsed_instrumentation": 0.000037999998312443495,
"return_value": {
"class": "Hash",
"value": "{session_id=>fda2e954db318bc48712f13d2738acbb, user_id=>762146111}",
"object_id": 191520,
"size": 2
}
},
{
"id": 219,
"event": "return",
"thread_id": 4280,
"parent_id": 188,
"elapsed": 0.000948999950196594,
"elapsed_instrumentation": 0.00003400002606213093
},
{
"id": 220,
"event": "call",
"thread_id": 4280,
"defined_class": "LoggedInHelper",
"method_id": "logged_in_user",
"path": "app/helpers/logged_in_helper.rb",
"lineno": 10,
"static": false,
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 221,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "logged_in?",
"path": "app/helpers/sessions_helper.rb",
"lineno": 35,
"static": false,
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 222,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 223,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 224,
"event": "return",
"thread_id": 4280,
"parent_id": 223,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000026999972760677338,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 225,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 191540,
"value": " \u001b[1m\u001b[36mUser Load (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMI (...43 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 226,
"event": "return",
"thread_id": 4280,
"parent_id": 225,
"elapsed": 0.000013999990187585354,
"elapsed_instrumentation": 0.000041000021155923605,
"return_value": {
"class": "Integer",
"value": "143",
"object_id": 287
}
},
{
"id": 227,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMIT ?",
"database_type": "sqlite"
}
},
{
"id": 228,
"event": "return",
"thread_id": 4280,
"parent_id": 227,
"elapsed": 0.000183,
"elapsed_instrumentation": 0.00002700003096833825
},
{
"id": 229,
"event": "return",
"thread_id": 4280,
"parent_id": 222,
"elapsed": 0.00044999999227002263,
"elapsed_instrumentation": 0.000035999983083456755,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 230,
"event": "return",
"thread_id": 4280,
"parent_id": 221,
"elapsed": 0.0004939999780617654,
"elapsed_instrumentation": 0.00002500001573935151,
"return_value": {
"class": "TrueClass",
"value": "true",
"object_id": 20
}
},
{
"id": 231,
"event": "return",
"thread_id": 4280,
"parent_id": 220,
"elapsed": 0.000526999996509403,
"elapsed_instrumentation": 0.000027999980375170708
},
{
"id": 232,
"event": "return",
"thread_id": 4280,
"parent_id": 187,
"elapsed": 0.0016869999817572534,
"elapsed_instrumentation": 0.00007400003960356116,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8d19b0580 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8d19b0940 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8d19b0aa8 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8d19b0c10 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8d19b0e18 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8d19b1020 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 44700,
"size": 6
}
},
{
"id": 233,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersController",
"method_id": "followers",
"path": "app/controllers/users_controller.rb",
"lineno": 66,
"static": false,
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 234,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 191580,
"value": " \u001b[1m\u001b[36mUser Load (0.0ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMI (...43 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 235,
"event": "return",
"thread_id": 4280,
"parent_id": 234,
"elapsed": 0.000012999982573091984,
"elapsed_instrumentation": 0.000039000005926936865,
"return_value": {
"class": "Integer",
"value": "143",
"object_id": 287
}
},
{
"id": 236,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMIT ?",
"database_type": "sqlite"
}
},
{
"id": 237,
"event": "return",
"thread_id": 4280,
"parent_id": 236,
"elapsed": 0.000125,
"elapsed_instrumentation": 0.000013999990187585354
},
{
"id": 238,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersController",
"method_id": "page_number",
"path": "app/controllers/users_controller.rb",
"lineno": 75,
"static": false,
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 239,
"event": "return",
"thread_id": 4280,
"parent_id": 238,
"elapsed": 0.000008000002708286047,
"elapsed_instrumentation": 0.00003100000321865082,
"return_value": {
"class": "Integer",
"value": "1",
"object_id": 3
}
},
{
"id": 240,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionController::Renderers",
"method_id": "render_to_body",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/renderers.rb",
"lineno": 141,
"static": false,
"parameters": [
{
"name": "options",
"class": "Hash",
"object_id": 191600,
"value": "{:action=>show_follow, :prefixes=>[users, application], :template=>show_follow, :layout=>#<Proc:0x00007fd8e32de970 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6}",
"kind": "req",
"size": 4
}
],
"receiver": {
"class": "UsersController",
"object_id": 191040,
"value": "#<UsersController:0x00007fd8e32cf588>"
}
},
{
"id": 241,
"event": "call",
"thread_id": 4280,
"defined_class": "app_views_users_show_follow_html_erb",
"method_id": "render",
"path": "app/views/users/show_follow.html.erb",
"static": true,
"receiver": {
"class": "ActionView::TemplateRenderer",
"object_id": 193540,
"value": "#<ActionView::TemplateRenderer:0x00007fd8e32dc9e0>"
}
},
{
"id": 242,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 191620,
"value": "show_follow",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 45040,
"value": "users",
"kind": "opt"
},
{
"name": "partial",
"class": "FalseClass",
"object_id": 0,
"value": "false",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191640,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 191660,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 243,
"event": "return",
"thread_id": 4280,
"parent_id": 242,
"elapsed": 0.00023799994960427284,
"elapsed_instrumentation": 0.00021100003505125642,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd8e32d0ca8>]",
"object_id": 191680,
"size": 1
}
},
{
"id": 244,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 191700,
"value": "users",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 191720,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "FalseClass",
"object_id": 0,
"value": "false",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191740,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 191760,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 245,
"event": "return",
"thread_id": 4280,
"parent_id": 244,
"elapsed": 0.00000500003807246685,
"elapsed_instrumentation": 0.00010100007057189941
},
{
"id": 246,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 191700,
"value": "users",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 191720,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "FalseClass",
"object_id": 0,
"value": "false",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191740,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 191760,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45340,
"value": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actiontext-6.0.4.1/app/views"
}
},
{
"id": 247,
"event": "return",
"thread_id": 4280,
"parent_id": 246,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.00008899997919797897
},
{
"id": 248,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 191700,
"value": "users",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 191720,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "FalseClass",
"object_id": 0,
"value": "false",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191740,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 191760,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45360,
"value": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionmailbox-6.0.4.1/app/views"
}
},
{
"id": 249,
"event": "return",
"thread_id": 4280,
"parent_id": 248,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.0000850000069476664
},
{
"id": 250,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 191780,
"value": "application",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 191800,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "FalseClass",
"object_id": 0,
"value": "false",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191820,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 191840,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 251,
"event": "return",
"thread_id": 4280,
"parent_id": 250,
"elapsed": 0.00000300002284348011,
"elapsed_instrumentation": 0.00016199995297938585,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd8e267e338>]",
"object_id": 45460,
"size": 1
}
},
{
"id": 252,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 191860,
"value": " Rendering users/show_follow.html.erb within layouts/application\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 253,
"event": "return",
"thread_id": 4280,
"parent_id": 252,
"elapsed": 0.000013999990187585354,
"elapsed_instrumentation": 0.000039000005926936865,
"return_value": {
"class": "Integer",
"value": "66",
"object_id": 133
}
},
{
"id": 254,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersHelper",
"method_id": "gravatar_for",
"path": "app/helpers/users_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 191900,
"value": "#<User:0x00007fd8e32e4cd0>",
"kind": "req"
},
{
"name": "options",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "opt"
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 255,
"event": "return",
"thread_id": 4280,
"parent_id": 254,
"elapsed": 0.00005000003147870302,
"elapsed_instrumentation": 0.00006499997107312083,
"return_value": {
"class": "ActiveSupport::SafeBuffer",
"value": "<img alt=\"Michael Example\" class=\"gravatar\" src=\"https://secure.gravatar.com/avatar/03ea78c0884c9ac0 (...25 more characters)",
"object_id": 191940
}
},
{
"id": 256,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 191960,
"value": " \u001b[1m\u001b[35m (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT COUNT(*) FROM \"microposts\" WHERE \"microposts\".\"user_id\" = ? (...31 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 257,
"event": "return",
"thread_id": 4280,
"parent_id": 256,
"elapsed": 0.000014999997802078724,
"elapsed_instrumentation": 0.000046000059228390455,
"return_value": {
"class": "Integer",
"value": "131",
"object_id": 263
}
},
{
"id": 258,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT COUNT(*) FROM \"microposts\" WHERE \"microposts\".\"user_id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 259,
"event": "return",
"thread_id": 4280,
"parent_id": 258,
"elapsed": 0.000205,
"elapsed_instrumentation": 0.00010900001507252455
},
{
"id": 260,
"event": "call",
"thread_id": 4280,
"defined_class": "app_views_shared__stats_html_erb",
"method_id": "render",
"path": "app/views/shared/_stats.html.erb",
"static": true,
"receiver": {
"class": "ActionView::PartialRenderer",
"object_id": 193560,
"value": "#<ActionView::PartialRenderer:0x00007fd8e32fc858>"
}
},
{
"id": 261,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 191980,
"value": "stats",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 192000,
"value": "shared",
"kind": "opt"
},
{
"name": "partial",
"class": "TrueClass",
"object_id": 20,
"value": "true",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191640,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 192020,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 262,
"event": "return",
"thread_id": 4280,
"parent_id": 261,
"elapsed": 0.000009000010322779417,
"elapsed_instrumentation": 0.00028000003658235073,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd8e2697248>]",
"object_id": 45640,
"size": 1
}
},
{
"id": 263,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192040,
"value": " \u001b[1m\u001b[35m (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\" (...112 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 264,
"event": "return",
"thread_id": 4280,
"parent_id": 263,
"elapsed": 0.000036999990697950125,
"elapsed_instrumentation": 0.000063000014051795,
"return_value": {
"class": "Integer",
"value": "212",
"object_id": 425
}
},
{
"id": 265,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"followed_id\" WHERE \"relationships\".\"follower_id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 266,
"event": "return",
"thread_id": 4280,
"parent_id": 265,
"elapsed": 0.000296,
"elapsed_instrumentation": 0.00001999997766688466
},
{
"id": 267,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192060,
"value": " \u001b[1m\u001b[35m (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\" (...112 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 268,
"event": "return",
"thread_id": 4280,
"parent_id": 267,
"elapsed": 0.000014999997802078724,
"elapsed_instrumentation": 0.00004800001624971628,
"return_value": {
"class": "Integer",
"value": "212",
"object_id": 425
}
},
{
"id": 269,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 270,
"event": "return",
"thread_id": 4280,
"parent_id": 269,
"elapsed": 0.00018,
"elapsed_instrumentation": 0.000014999997802078724
},
{
"id": 271,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192080,
"value": " Rendered shared/_stats.html.erb (Duration: 1.5ms | Allocations: 982)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 272,
"event": "return",
"thread_id": 4280,
"parent_id": 271,
"elapsed": 0.000010999967344105244,
"elapsed_instrumentation": 0.00003700004890561104,
"return_value": {
"class": "Integer",
"value": "71",
"object_id": 143
}
},
{
"id": 273,
"event": "return",
"thread_id": 4280,
"parent_id": 260,
"elapsed": 0.0019400000455789268,
"elapsed_instrumentation": 0.000029999995604157448
},
{
"id": 274,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192100,
"value": " \u001b[1m\u001b[35mCACHE (0.0ms)\u001b[0m \u001b[1m\u001b[34mSELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \" (...118 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 275,
"event": "return",
"thread_id": 4280,
"parent_id": 274,
"elapsed": 0.000011999974958598614,
"elapsed_instrumentation": 0.000043000036384910345,
"return_value": {
"class": "Integer",
"value": "218",
"object_id": 437
}
},
{
"id": 276,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 277,
"event": "return",
"thread_id": 4280,
"parent_id": 276,
"elapsed": 0.000104,
"elapsed_instrumentation": 0.000013999990187585354
},
{
"id": 278,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveRecord::Relation",
"method_id": "records",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.0.4.1/lib/active_record/relation.rb",
"lineno": 249,
"static": false,
"receiver": {
"class": "ActiveRecord::AssociationRelation",
"object_id": 192120,
"value": "#<User::ActiveRecord_AssociationRelation:0x00007fd8e32df0a0>"
}
},
{
"id": 279,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192140,
"value": " \u001b[1m\u001b[36mUser Load (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" INNER JOIN \"relationships\" (...169 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 280,
"event": "return",
"thread_id": 4280,
"parent_id": 279,
"elapsed": 0.000012000033166259527,
"elapsed_instrumentation": 0.000043000036384910345,
"return_value": {
"class": "Integer",
"value": "269",
"object_id": 539
}
},
{
"id": 281,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ? LIMIT ? OFFSET ?",
"database_type": "sqlite"
}
},
{
"id": 282,
"event": "return",
"thread_id": 4280,
"parent_id": 281,
"elapsed": 0.00023,
"elapsed_instrumentation": 0.000016000005416572094
},
{
"id": 283,
"event": "return",
"thread_id": 4280,
"parent_id": 278,
"elapsed": 0.00043700000969693065,
"elapsed_instrumentation": 0.000060999998822808266,
"return_value": {
"class": "Array",
"value": "[#<User:0x00007fd8e258e388>, #<User:0x00007fd8e258e298>]",
"object_id": 192160,
"size": 2
}
},
{
"id": 284,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersHelper",
"method_id": "gravatar_for",
"path": "app/helpers/users_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 192180,
"value": "#<User:0x00007fd8e258e388>",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 192200,
"value": "{:size=>30}",
"kind": "opt",
"size": 1
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 285,
"event": "return",
"thread_id": 4280,
"parent_id": 284,
"elapsed": 0.00004799995804205537,
"elapsed_instrumentation": 0.00006799999391660094,
"return_value": {
"class": "ActiveSupport::SafeBuffer",
"value": "<img alt=\"Lana Kane\" class=\"gravatar\" src=\"https://secure.gravatar.com/avatar/de9a58df9617af487e8b28 (...19 more characters)",
"object_id": 192220
}
},
{
"id": 286,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersHelper",
"method_id": "gravatar_for",
"path": "app/helpers/users_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 192240,
"value": "#<User:0x00007fd8e258e298>",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 192260,
"value": "{:size=>30}",
"kind": "opt",
"size": 1
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 287,
"event": "return",
"thread_id": 4280,
"parent_id": 286,
"elapsed": 0.00002500001573935151,
"elapsed_instrumentation": 0.000058999983593821526,
"return_value": {
"class": "ActiveSupport::SafeBuffer",
"value": "<img alt=\"Sterling Archer\" class=\"gravatar\" src=\"https://secure.gravatar.com/avatar/d08d4b6a8f375370 (...25 more characters)",
"object_id": 192280
}
},
{
"id": 288,
"event": "call",
"thread_id": 4280,
"defined_class": "app_views_users__user_html_erb",
"method_id": "render",
"path": "app/views/users/_user.html.erb",
"static": true,
"receiver": {
"class": "ActionView::PartialRenderer",
"object_id": 193580,
"value": "#<ActionView::PartialRenderer:0x00007fd921a69350>"
}
},
{
"id": 289,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveRecord::Relation",
"method_id": "records",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.0.4.1/lib/active_record/relation.rb",
"lineno": 249,
"static": false,
"receiver": {
"class": "ActiveRecord::AssociationRelation",
"object_id": 192120,
"value": "#<User::ActiveRecord_AssociationRelation:0x00007fd8e32df0a0>"
}
},
{
"id": 290,
"event": "return",
"thread_id": 4280,
"parent_id": 289,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00004799995804205537,
"return_value": {
"class": "Array",
"value": "[#<User:0x00007fd8e258e388>, #<User:0x00007fd8e258e298>]",
"object_id": 192160,
"size": 2
}
},
{
"id": 291,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 192300,
"value": "user",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 192320,
"value": "users",
"kind": "opt"
},
{
"name": "partial",
"class": "TrueClass",
"object_id": 20,
"value": "true",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191640,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 192340,
"value": "[:user, :user_counter, :user_iteration]",
"kind": "opt",
"size": 3
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 292,
"event": "return",
"thread_id": 4280,
"parent_id": 291,
"elapsed": 0.000010000017937272787,
"elapsed_instrumentation": 0.00020700000459328294,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd9011f1120>]",
"object_id": 178940,
"size": 1
}
},
{
"id": 293,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersHelper",
"method_id": "gravatar_for",
"path": "app/helpers/users_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 192180,
"value": "#<User:0x00007fd8e258e388>",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 192360,
"value": "{:size=>50}",
"kind": "opt",
"size": 1
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 294,
"event": "return",
"thread_id": 4280,
"parent_id": 293,
"elapsed": 0.000024999957531690598,
"elapsed_instrumentation": 0.00006000004941597581,
"return_value": {
"class": "ActiveSupport::SafeBuffer",
"value": "<img alt=\"Lana Kane\" class=\"gravatar\" src=\"https://secure.gravatar.com/avatar/de9a58df9617af487e8b28 (...19 more characters)",
"object_id": 192380
}
},
{
"id": 295,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 296,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 297,
"event": "return",
"thread_id": 4280,
"parent_id": 296,
"elapsed": 0.00000300002284348011,
"elapsed_instrumentation": 0.000033999967854470015,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 298,
"event": "return",
"thread_id": 4280,
"parent_id": 295,
"elapsed": 0.00004900002386420965,
"elapsed_instrumentation": 0.000035999983083456755,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 299,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user?",
"path": "app/helpers/sessions_helper.rb",
"lineno": 29,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 192180,
"value": "#<User:0x00007fd8e258e388>",
"kind": "req"
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 300,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 301,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 302,
"event": "return",
"thread_id": 4280,
"parent_id": 301,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.000025999965146183968,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 303,
"event": "return",
"thread_id": 4280,
"parent_id": 300,
"elapsed": 0.0000350000336766243,
"elapsed_instrumentation": 0.000029999995604157448,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 304,
"event": "return",
"thread_id": 4280,
"parent_id": 299,
"elapsed": 0.00007800001185387373,
"elapsed_instrumentation": 0.00003300001844763756
},
{
"id": 305,
"event": "call",
"thread_id": 4280,
"defined_class": "UsersHelper",
"method_id": "gravatar_for",
"path": "app/helpers/users_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 192240,
"value": "#<User:0x00007fd8e258e298>",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 192400,
"value": "{:size=>50}",
"kind": "opt",
"size": 1
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 306,
"event": "return",
"thread_id": 4280,
"parent_id": 305,
"elapsed": 0.000021000043489038944,
"elapsed_instrumentation": 0.00005500001134350896,
"return_value": {
"class": "ActiveSupport::SafeBuffer",
"value": "<img alt=\"Sterling Archer\" class=\"gravatar\" src=\"https://secure.gravatar.com/avatar/d08d4b6a8f375370 (...25 more characters)",
"object_id": 192420
}
},
{
"id": 307,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 308,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 309,
"event": "return",
"thread_id": 4280,
"parent_id": 308,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00002600002335384488,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 310,
"event": "return",
"thread_id": 4280,
"parent_id": 307,
"elapsed": 0.000032999960239976645,
"elapsed_instrumentation": 0.0000320000690408051,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 311,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user?",
"path": "app/helpers/sessions_helper.rb",
"lineno": 29,
"static": false,
"parameters": [
{
"name": "user",
"class": "User",
"object_id": 192240,
"value": "#<User:0x00007fd8e258e298>",
"kind": "req"
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 312,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 313,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 314,
"event": "return",
"thread_id": 4280,
"parent_id": 313,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000024999957531690598,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 315,
"event": "return",
"thread_id": 4280,
"parent_id": 312,
"elapsed": 0.00003200001083314419,
"elapsed_instrumentation": 0.000027999980375170708,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 316,
"event": "return",
"thread_id": 4280,
"parent_id": 311,
"elapsed": 0.00006799999391660094,
"elapsed_instrumentation": 0.00003100000321865082
},
{
"id": 317,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192440,
"value": " Rendered collection of users/_user.html.erb [2 times] (Duration: 0.8ms | Allocations: 1313)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 318,
"event": "return",
"thread_id": 4280,
"parent_id": 317,
"elapsed": 0.000013000040780752897,
"elapsed_instrumentation": 0.000031999952625483274,
"return_value": {
"class": "Integer",
"value": "94",
"object_id": 189
}
},
{
"id": 319,
"event": "return",
"thread_id": 4280,
"parent_id": 288,
"elapsed": 0.0011860000086016953,
"elapsed_instrumentation": 0.000017000071238726377
},
{
"id": 320,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192460,
"value": " Rendered users/show_follow.html.erb within layouts/application (Duration: 5.8ms | Allocations: 547 (...3 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 321,
"event": "return",
"thread_id": 4280,
"parent_id": 320,
"elapsed": 0.000010000017937272787,
"elapsed_instrumentation": 0.000033999967854470015,
"return_value": {
"class": "Integer",
"value": "103",
"object_id": 207
}
},
{
"id": 322,
"event": "call",
"thread_id": 4280,
"defined_class": "ApplicationHelper",
"method_id": "full_title",
"path": "app/helpers/application_helper.rb",
"lineno": 4,
"static": false,
"parameters": [
{
"name": "page_title",
"class": "ActiveSupport::SafeBuffer",
"object_id": 192480,
"value": "Followers",
"kind": "opt"
}
],
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 323,
"event": "return",
"thread_id": 4280,
"parent_id": 322,
"elapsed": 0.000008000002708286047,
"elapsed_instrumentation": 0.00003899994771927595,
"return_value": {
"class": "ActiveSupport::SafeBuffer",
"value": "Followers | Ruby on Rails Tutorial Sample App",
"object_id": 192500
}
},
{
"id": 324,
"event": "call",
"thread_id": 4280,
"defined_class": "Sprockets::EncodingUtils",
"method_id": "unmarshaled_deflated",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sprockets-4.0.2/lib/sprockets/encoding_utils.rb",
"lineno": 39,
"static": true,
"parameters": [
{
"name": "str",
"class": "String",
"object_id": 192520,
"value": "x______D\u0014___Z\u0011\u0015o_[QQ_L_]\u000e_\u0005|__\u001c*__\u0003___t2__I____._j_\u001f\u0004O\u0014\u0014________L2_K____\u0007__:}_______q__3_____T_Mm_&Q (...1555 more characters)",
"kind": "req"
},
{
"name": "window_bits",
"class": "Integer",
"object_id": 31,
"value": "15",
"kind": "opt"
}
],
"receiver": {
"class": "Module",
"object_id": 5920,
"value": "Sprockets::EncodingUtils"
}
},
{
"id": 325,
"event": "call",
"thread_id": 4280,
"defined_class": "Marshal",
"method_id": "load",
"path": "Marshal.load",
"static": true,
"parameters": [
{
"name": "source",
"class": "String",
"object_id": 192540,
"value": "\u0004\b[\bo:\bSet\u0006:\n@hash}}I\"\u0018environment-version\u0006:\u0006ETTI\"\u0016environment-paths\u0006;\u0007TTI\"\u000erails-env\u0006;\u0007TTI\"0process (...16199 more characters)",
"kind": "req"
},
{
"name": "arg",
"class": "Array",
"object_id": 192560,
"value": "[]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "Module",
"object_id": 50120,
"value": "Marshal"
}
},
{
"id": 326,
"event": "return",
"thread_id": 4280,
"parent_id": 325,
"elapsed": 0.00019699998665601015,
"elapsed_instrumentation": 0.0008410000009462237,
"return_value": {
"class": "Array",
"value": "[#<Set: {\"environment-version\", \"environment-paths\", \"rails-env\", \"processors:type=text/css&file_type, #<Set: {\"environment-version\", \"environment-paths\", \"rails-env\", \"processors:type=text/css&file_type, #<Set: {\"environment-version\", \"environment-paths\", \"rails-env\", \"processors:type=text/css&file_type]",
"object_id": 192640,
"size": 3
}
},
{
"id": 327,
"event": "return",
"thread_id": 4280,
"parent_id": 324,
"elapsed": 0.0011030000168830156,
"elapsed_instrumentation": 0.0008439999655820429,
"return_value": {
"class": "Array",
"value": "[#<Set: {\"environment-version\", \"environment-paths\", \"rails-env\", \"processors:type=text/css&file_type, #<Set: {\"environment-version\", \"environment-paths\", \"rails-env\", \"processors:type=text/css&file_type, #<Set: {\"environment-version\", \"environment-paths\", \"rails-env\", \"processors:type=text/css&file_type]",
"object_id": 192640,
"size": 3
}
},
{
"id": 328,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192660,
"value": "[Webpacker] Everything's up-to-date. Nothing to do\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 329,
"event": "return",
"thread_id": 4280,
"parent_id": 328,
"elapsed": 0.00002700003096833825,
"elapsed_instrumentation": 0.00009600003249943256,
"return_value": {
"class": "Integer",
"value": "51",
"object_id": 103
}
},
{
"id": 330,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Parser",
"method_id": "parse",
"path": "JSON::Ext::Parser#parse",
"static": false,
"receiver": {
"class": "JSON::Ext::Parser",
"object_id": 192680,
"value": "#<JSON::Ext::Parser:0x00007fd8e331e6d8>"
}
},
{
"id": 331,
"event": "return",
"thread_id": 4280,
"parent_id": 330,
"elapsed": 0.000010000017937272787,
"elapsed_instrumentation": 0.00008999998681247234,
"return_value": {
"class": "Hash",
"value": "{application.js=>/packs-test/js/application-e67176e90b41fff7a658.js, application.js.map=>/packs-test/js/application-e67176e90b41fff7a658.js.map, entrypoints=>{application=>{js=>[/packs-test/js/application-e67176e90b41fff7a658.js], js.map=>[/packs-test/js/application-e67176e90b41fff7a658.js.map]}}}",
"object_id": 192700,
"size": 3
}
},
{
"id": 332,
"event": "call",
"thread_id": 4280,
"defined_class": "app_views_layouts__shim_html_erb",
"method_id": "render",
"path": "app/views/layouts/_shim.html.erb",
"static": true,
"receiver": {
"class": "ActionView::PartialRenderer",
"object_id": 193600,
"value": "#<ActionView::PartialRenderer:0x00007fd8e2595890>"
}
},
{
"id": 333,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 192720,
"value": "shim",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 192740,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "TrueClass",
"object_id": 20,
"value": "true",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191640,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 192760,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 334,
"event": "return",
"thread_id": 4280,
"parent_id": 333,
"elapsed": 0.000009999959729611874,
"elapsed_instrumentation": 0.00022900005569681525,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd92119a558>]",
"object_id": 69420,
"size": 1
}
},
{
"id": 335,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192780,
"value": " Rendered layouts/_shim.html.erb (Duration: 0.0ms | Allocations: 12)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 336,
"event": "return",
"thread_id": 4280,
"parent_id": 335,
"elapsed": 0.00001599994720891118,
"elapsed_instrumentation": 0.00003900006413459778,
"return_value": {
"class": "Integer",
"value": "70",
"object_id": 141
}
},
{
"id": 337,
"event": "return",
"thread_id": 4280,
"parent_id": 332,
"elapsed": 0.0004220000118948519,
"elapsed_instrumentation": 0.00002099998528137803
},
{
"id": 338,
"event": "call",
"thread_id": 4280,
"defined_class": "app_views_layouts__header_html_erb",
"method_id": "render",
"path": "app/views/layouts/_header.html.erb",
"static": true,
"receiver": {
"class": "ActionView::PartialRenderer",
"object_id": 193620,
"value": "#<ActionView::PartialRenderer:0x00007fd8d1933328>"
}
},
{
"id": 339,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 192800,
"value": "header",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 192820,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "TrueClass",
"object_id": 20,
"value": "true",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191640,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 192840,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 340,
"event": "return",
"thread_id": 4280,
"parent_id": 339,
"elapsed": 0.000005999987479299307,
"elapsed_instrumentation": 0.00016499997582286596,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd8d19ba530>]",
"object_id": 69540,
"size": 1
}
},
{
"id": 341,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "logged_in?",
"path": "app/helpers/sessions_helper.rb",
"lineno": 35,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 342,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 343,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 344,
"event": "return",
"thread_id": 4280,
"parent_id": 343,
"elapsed": 0.0000029999646358191967,
"elapsed_instrumentation": 0.00003700004890561104,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 345,
"event": "return",
"thread_id": 4280,
"parent_id": 342,
"elapsed": 0.00005000003147870302,
"elapsed_instrumentation": 0.00004499999340623617,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 346,
"event": "return",
"thread_id": 4280,
"parent_id": 341,
"elapsed": 0.00010299996938556433,
"elapsed_instrumentation": 0.00003400002606213093,
"return_value": {
"class": "TrueClass",
"value": "true",
"object_id": 20
}
},
{
"id": 347,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 348,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 349,
"event": "return",
"thread_id": 4280,
"parent_id": 348,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000025999965146183968,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 350,
"event": "return",
"thread_id": 4280,
"parent_id": 347,
"elapsed": 0.000034999975468963385,
"elapsed_instrumentation": 0.00003200001083314419,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 351,
"event": "call",
"thread_id": 4280,
"defined_class": "SessionsHelper",
"method_id": "current_user",
"path": "app/helpers/sessions_helper.rb",
"lineno": 16,
"static": false,
"receiver": {
"class": "ActionView::Base",
"object_id": 191920,
"value": "#<#<Class:0x00007fd8e2656e28>:0x00007fd8e32dcd50>"
}
},
{
"id": 352,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "Symbol",
"object_id": 7869468,
"value": ":user_id",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 353,
"event": "return",
"thread_id": 4280,
"parent_id": 352,
"elapsed": 0.0000019999570213258266,
"elapsed_instrumentation": 0.00002500001573935151,
"return_value": {
"class": "Integer",
"value": "762146111",
"object_id": 1524292223
}
},
{
"id": 354,
"event": "return",
"thread_id": 4280,
"parent_id": 351,
"elapsed": 0.000032999960239976645,
"elapsed_instrumentation": 0.0000320000690408051,
"return_value": {
"class": "User",
"value": "#<User:0x00007fd8e32ed308>",
"object_id": 191560
}
},
{
"id": 355,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192860,
"value": " Rendered layouts/_header.html.erb (Duration: 0.5ms | Allocations: 741)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 356,
"event": "return",
"thread_id": 4280,
"parent_id": 355,
"elapsed": 0.000012999982573091984,
"elapsed_instrumentation": 0.000039000005926936865,
"return_value": {
"class": "Integer",
"value": "73",
"object_id": 147
}
},
{
"id": 357,
"event": "return",
"thread_id": 4280,
"parent_id": 338,
"elapsed": 0.0007869999972172081,
"elapsed_instrumentation": 0.000012000033166259527
},
{
"id": 358,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Request::Session",
"method_id": "[]",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb",
"lineno": 91,
"static": false,
"parameters": [
{
"name": "key",
"class": "String",
"object_id": 41940,
"value": "flash",
"kind": "req"
}
],
"receiver": {
"class": "ActionDispatch::Request::Session",
"object_id": 191120,
"value": "#<ActionDispatch::Request::Session:0x00007fd9022e4838>"
}
},
{
"id": 359,
"event": "return",
"thread_id": 4280,
"parent_id": 358,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000028999987989664078
},
{
"id": 360,
"event": "call",
"thread_id": 4280,
"defined_class": "app_views_layouts__footer_html_erb",
"method_id": "render",
"path": "app/views/layouts/_footer.html.erb",
"static": true,
"receiver": {
"class": "ActionView::PartialRenderer",
"object_id": 193640,
"value": "#<ActionView::PartialRenderer:0x00007fd90237db00>"
}
},
{
"id": 361,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionView::Resolver",
"method_id": "find_all",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb",
"lineno": 116,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 192880,
"value": "footer",
"kind": "req"
},
{
"name": "prefix",
"class": "String",
"object_id": 192900,
"value": "layouts",
"kind": "opt"
},
{
"name": "partial",
"class": "TrueClass",
"object_id": 20,
"value": "true",
"kind": "opt"
},
{
"name": "details",
"class": "Hash",
"object_id": 191640,
"value": "{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}",
"kind": "opt",
"size": 4
},
{
"name": "key",
"class": "Object",
"object_id": 45080,
"value": "#<Object:0x00007fd8e2646be0>",
"kind": "opt"
},
{
"name": "locals",
"class": "Array",
"object_id": 192920,
"value": "[]",
"kind": "opt",
"size": 0
}
],
"receiver": {
"class": "ActionView::OptimizedFileSystemResolver",
"object_id": 45120,
"value": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/app/views"
}
},
{
"id": 362,
"event": "return",
"thread_id": 4280,
"parent_id": 361,
"elapsed": 0.000005999987479299307,
"elapsed_instrumentation": 0.00033599999733269215,
"return_value": {
"class": "Array",
"value": "[#<ActionView::Template:0x00007fd8d1998ef8>]",
"object_id": 69680,
"size": 1
}
},
{
"id": 363,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192940,
"value": " Rendered layouts/_footer.html.erb (Duration: 0.1ms | Allocations: 56)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 364,
"event": "return",
"thread_id": 4280,
"parent_id": 363,
"elapsed": 0.000012999982573091984,
"elapsed_instrumentation": 0.000035999983083456755,
"return_value": {
"class": "Integer",
"value": "72",
"object_id": 145
}
},
{
"id": 365,
"event": "return",
"thread_id": 4280,
"parent_id": 360,
"elapsed": 0.0005099999834783375,
"elapsed_instrumentation": 0.000011000025551766157
},
{
"id": 366,
"event": "return",
"thread_id": 4280,
"parent_id": 241,
"elapsed": 0.017995000001974404,
"elapsed_instrumentation": 0.00001699995482340455
},
{
"id": 367,
"event": "return",
"thread_id": 4280,
"parent_id": 240,
"elapsed": 0.018096000014338642,
"elapsed_instrumentation": 0.00009600003249943256,
"return_value": {
"class": "ActionView::OutputBuffer",
"value": "<!DOCTYPE html>\n<html>\n <head>\n <title>Followers | Ruby on Rails Tutorial Sample App</title>\n (...4168 more characters)",
"object_id": 192960
}
},
{
"id": 368,
"event": "return",
"thread_id": 4280,
"parent_id": 233,
"elapsed": 0.019182000018190593,
"elapsed_instrumentation": 0.00009899999713525176,
"return_value": {
"class": "ActionView::OutputBuffer",
"value": "<!DOCTYPE html>\n<html>\n <head>\n <title>Followers | Ruby on Rails Tutorial Sample App</title>\n (...4168 more characters)",
"object_id": 192960
}
},
{
"id": 369,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 191100,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 44620,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8d19b13e0>"
}
},
{
"id": 370,
"event": "return",
"thread_id": 4280,
"parent_id": 369,
"elapsed": 0.00001899997005239129,
"elapsed_instrumentation": 0.00004900002386420965,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8d19b07b0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 69760,
"size": 1
}
},
{
"id": 371,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 192980,
"value": "Completed 200 OK in 21ms (Views: 17.8ms | ActiveRecord: 0.6ms | Allocations: 19949)\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 372,
"event": "return",
"thread_id": 4280,
"parent_id": 371,
"elapsed": 0.000011999974958598614,
"elapsed_instrumentation": 0.00003600004129111767,
"return_value": {
"class": "Integer",
"value": "84",
"object_id": 169
}
},
{
"id": 373,
"event": "return",
"thread_id": 4280,
"parent_id": 182,
"elapsed": 0.02155600005062297,
"elapsed_instrumentation": 0.00009600003249943256,
"return_value": {
"class": "ActionView::OutputBuffer",
"value": "<!DOCTYPE html>\n<html>\n <head>\n <title>Followers | Ruby on Rails Tutorial Sample App</title>\n (...4168 more characters)",
"object_id": 192960
}
},
{
"id": 374,
"event": "return",
"thread_id": 4280,
"parent_id": 181,
"elapsed_instrumentation": 0.0002209999947808683,
"http_server_response": {
"headers": {
"X-Frame-Options": "SAMEORIGIN",
"X-XSS-Protection": "1; mode=block",
"X-Content-Type-Options": "nosniff",
"X-Download-Options": "noopen",
"X-Permitted-Cross-Domain-Policies": "none",
"Referrer-Policy": "strict-origin-when-cross-origin",
"Content-Type": "text/html; charset=utf-8"
},
"status": 200
}
},
{
"id": 375,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Generator::State",
"method_id": "generate",
"path": "JSON::Ext::Generator::State#generate",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Hash",
"object_id": 193000,
"value": "{session_id=>fda2e954db318bc48712f13d2738acbb, user_id=>762146111}",
"kind": "req",
"size": 2
}
],
"receiver": {
"class": "JSON::Ext::Generator::State",
"object_id": 193020,
"value": "#<JSON::Ext::Generator::State:0x00007fd8d19393b8>"
}
},
{
"id": 376,
"event": "return",
"thread_id": 4280,
"parent_id": 375,
"elapsed": 0.000014999997802078724,
"elapsed_instrumentation": 0.00005400000372901559,
"return_value": {
"class": "String",
"value": "{\"session_id\":\"fda2e954db318bc48712f13d2738acbb\",\"user_id\":762146111}",
"object_id": 193040
}
},
{
"id": 377,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::MessageEncryptor",
"method_id": "encrypt_and_sign",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/message_encryptor.rb",
"lineno": 150,
"static": false,
"parameters": [
{
"name": "value",
"class": "String",
"object_id": 193040,
"value": "{\"session_id\":\"fda2e954db318bc48712f13d2738acbb\",\"user_id\":762146111}",
"kind": "req"
},
{
"name": "expires_at",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "key"
},
{
"name": "expires_in",
"class": "NilClass",
"object_id": 8,
"value": null,
"kind": "key"
},
{
"name": "purpose",
"class": "String",
"object_id": 193060,
"value": "cookie._sample_app_session",
"kind": "key"
}
],
"receiver": {
"class": "ActiveSupport::MessageEncryptor",
"object_id": 193080,
"value": "#<ActiveSupport::MessageEncryptor:0x00007fd90232c9d0>"
}
},
{
"id": 378,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "encrypt",
"path": "OpenSSL::Cipher#encrypt",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 193100,
"value": "[]",
"kind": "rest",
"size": 0
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>",
"labels": [
"crypto.algorithm.id-aes256-GCM"
]
}
},
{
"id": 379,
"event": "return",
"thread_id": 4280,
"parent_id": 378,
"elapsed": 0.0000029999646358191967,
"elapsed_instrumentation": 0.000045000051613897085,
"return_value": {
"class": "OpenSSL::Cipher",
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>",
"object_id": 193120
}
},
{
"id": 380,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "key=",
"path": "OpenSSL::Cipher#key=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 41800,
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>"
}
},
{
"id": 381,
"event": "return",
"thread_id": 4280,
"parent_id": 380,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.000045000051613897085,
"return_value": {
"class": "String",
"value": "_W?xP_\u0017___\t4____%___p_]_\u0013__b_kB|",
"object_id": 41800
}
},
{
"id": 382,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "random_iv",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/openssl/cipher.rb",
"lineno": 55,
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>"
}
},
{
"id": 383,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Random",
"method_id": "random_bytes",
"path": "OpenSSL::Random.random_bytes",
"static": true,
"parameters": [
{
"name": "arg",
"class": "Integer",
"object_id": 25,
"value": "12",
"kind": "req"
}
],
"receiver": {
"class": "Module",
"object_id": 28540,
"value": "OpenSSL::Random"
}
},
{
"id": 384,
"event": "return",
"thread_id": 4280,
"parent_id": 383,
"elapsed": 0.000011000025551766157,
"elapsed_instrumentation": 0.000033999967854470015,
"return_value": {
"class": "String",
"value": "M___b__\u0019_-+&",
"object_id": 193140
}
},
{
"id": 385,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "iv=",
"path": "OpenSSL::Cipher#iv=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 193140,
"value": "M___b__\u0019_-+&",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>"
}
},
{
"id": 386,
"event": "return",
"thread_id": 4280,
"parent_id": 385,
"elapsed": 0.00000200001522898674,
"elapsed_instrumentation": 0.00003300001844763756,
"return_value": {
"class": "String",
"value": "M___b__\u0019_-+&",
"object_id": 193140
}
},
{
"id": 387,
"event": "return",
"thread_id": 4280,
"parent_id": 382,
"elapsed": 0.00009300000965595245,
"elapsed_instrumentation": 0.00002400000812485814,
"return_value": {
"class": "String",
"value": "M___b__\u0019_-+&",
"object_id": 193140
}
},
{
"id": 388,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "auth_data=",
"path": "OpenSSL::Cipher#auth_data=",
"static": false,
"parameters": [
{
"name": "arg",
"class": "String",
"object_id": 42340,
"value": "",
"kind": "req"
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>"
}
},
{
"id": 389,
"event": "return",
"thread_id": 4280,
"parent_id": 388,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.000025999965146183968,
"return_value": {
"class": "String",
"value": "",
"object_id": 42340
}
},
{
"id": 390,
"event": "call",
"thread_id": 4280,
"defined_class": "JSON::Ext::Generator::State",
"method_id": "generate",
"path": "JSON::Ext::Generator::State#generate",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Hash",
"object_id": 193160,
"value": "{_rails=>{message=>eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIjo3NjIxNDYxMTF9, exp=>, pur=>cookie._sample_app_session}}",
"kind": "req",
"size": 1
}
],
"receiver": {
"class": "JSON::Ext::Generator::State",
"object_id": 193180,
"value": "#<JSON::Ext::Generator::State:0x00007fd9210dfd98>"
}
},
{
"id": 391,
"event": "return",
"thread_id": 4280,
"parent_id": 390,
"elapsed": 0.00001699995482340455,
"elapsed_instrumentation": 0.00005600001895800233,
"return_value": {
"class": "String",
"value": "{\"_rails\":{\"message\":\"eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIj (...63 more characters)",
"object_id": 193200
}
},
{
"id": 392,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "update",
"path": "OpenSSL::Cipher#update",
"static": false,
"parameters": [
{
"name": "arg",
"class": "Array",
"object_id": 193220,
"value": "[{\"_rails\":{\"message\":\"eyJzZXNzaW9uX2lkIjoiZmRhMmU5NTRkYjMxOGJjNDg3MTJmMTNkMjczOGFjYmIiLCJ1c2VyX2lkIj (...63 more characters)]",
"kind": "rest",
"size": 1
}
],
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>"
}
},
{
"id": 393,
"event": "return",
"thread_id": 4280,
"parent_id": 392,
"elapsed": 0.000003999972250312567,
"elapsed_instrumentation": 0.00004299997817724943,
"return_value": {
"class": "String",
"value": "___a___$'O>__\u000f_;4W__\b___\u001f\u001a@__WB____\u001c'__5ANp\r__@_\\\u001a_+j__Y______+_\u001e_7_s~__L__^_I\r_____\u001dFW*_\u001e________._ (...63 more characters)",
"object_id": 193240
}
},
{
"id": 394,
"event": "call",
"thread_id": 4280,
"defined_class": "OpenSSL::Cipher",
"method_id": "final",
"path": "OpenSSL::Cipher#final",
"static": false,
"receiver": {
"class": "OpenSSL::Cipher",
"object_id": 193120,
"value": "#<OpenSSL::Cipher:0x00007fd8e259e238>"
}
},
{
"id": 395,
"event": "return",
"thread_id": 4280,
"parent_id": 394,
"elapsed": 0.0000019999570213258266,
"elapsed_instrumentation": 0.0000219999928958714,
"return_value": {
"class": "String",
"value": "",
"object_id": 193260
}
},
{
"id": 396,
"event": "return",
"thread_id": 4280,
"parent_id": 377,
"elapsed": 0.0004659999976865947,
"elapsed_instrumentation": 0.00004700000863522291,
"return_value": {
"class": "String",
"value": "76vwYc6ImiQnTz7AnA/qOzRXo74Ih+GyHxpAtKpXQort19wcJ4StNUFOcA2f7kCjXBrwK2qu9VnVzM+u6vkr6x7RN69zfpWaTOaZ (...164 more characters)",
"object_id": 193280
}
},
{
"id": 397,
"event": "call",
"thread_id": 4280,
"defined_class": "ActionDispatch::Cookies::CookieJar",
"method_id": "[]=",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb",
"lineno": 373,
"static": false,
"parameters": [
{
"name": "name",
"class": "String",
"object_id": 41900,
"value": "_sample_app_session",
"kind": "req"
},
{
"name": "options",
"class": "Hash",
"object_id": 193300,
"value": "{:value=>76vwYc6ImiQnTz7AnA/qOzRXo74Ih+GyHxpAtKpXQort19wcJ4StNUFOcA2f7kCjXBrwK2qu9VnVzM+u6vkr6x7RN69zfpWaTOaZ (...164 more characters), :same_site=>, :path=>/, :domain=>, :expire_after=>, :secure=>false, :httponly=>true, :defer=>false, :renew=>false, :id=>fda2e954db318bc48712f13d2738acbb}",
"kind": "req",
"size": 10
}
],
"receiver": {
"class": "ActionDispatch::Cookies::CookieJar",
"object_id": 191160,
"value": "#<ActionDispatch::Cookies::CookieJar:0x00007fd90232e578>"
}
},
{
"id": 398,
"event": "return",
"thread_id": 4280,
"parent_id": 397,
"elapsed": 0.000010000017937272787,
"elapsed_instrumentation": 0.00008699996396899223,
"return_value": {
"class": "String",
"value": "76vwYc6ImiQnTz7AnA/qOzRXo74Ih+GyHxpAtKpXQort19wcJ4StNUFOcA2f7kCjXBrwK2qu9VnVzM+u6vkr6x7RN69zfpWaTOaZ (...164 more characters)",
"object_id": 193280
}
},
{
"id": 399,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 193320,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 42560,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd92114ea68>"
}
},
{
"id": 400,
"event": "return",
"thread_id": 4280,
"parent_id": 399,
"elapsed": 0.000063000014051795,
"elapsed_instrumentation": 0.00030999997397884727,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd92114e310 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd92114e478 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd92114e658 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 42580,
"size": 3
}
},
{
"id": 401,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 193320,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 42560,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd92114ea68>"
}
},
{
"id": 402,
"event": "return",
"thread_id": 4280,
"parent_id": 401,
"elapsed": 0.000011000025551766157,
"elapsed_instrumentation": 0.00003799994010478258,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd92114e7c0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 42600,
"size": 1
}
},
{
"id": 403,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 193360,
"value": " \u001b[1m\u001b[36mUser Exists? (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT 1 AS one FROM \"users\" INNER JOIN \"relationships (...146 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 404,
"event": "return",
"thread_id": 4280,
"parent_id": 403,
"elapsed": 0.000024999957531690598,
"elapsed_instrumentation": 0.00005300005432218313,
"return_value": {
"class": "Integer",
"value": "246",
"object_id": 493
}
},
{
"id": 405,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT 1 AS one FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ? LIMIT ?",
"database_type": "sqlite"
}
},
{
"id": 406,
"event": "return",
"thread_id": 4280,
"parent_id": 405,
"elapsed": 0.000264,
"elapsed_instrumentation": 0.00002600002335384488
},
{
"id": 407,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 193380,
"value": " \u001b[1m\u001b[35m (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\" (...112 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 408,
"event": "return",
"thread_id": 4280,
"parent_id": 407,
"elapsed": 0.000012999982573091984,
"elapsed_instrumentation": 0.00004600000102072954,
"return_value": {
"class": "Integer",
"value": "212",
"object_id": 425
}
},
{
"id": 409,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 410,
"event": "return",
"thread_id": 4280,
"parent_id": 409,
"elapsed": 0.00017,
"elapsed_instrumentation": 0.000014999997802078724
},
{
"id": 411,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 193420,
"value": " \u001b[1m\u001b[36mUser Load (0.1ms)\u001b[0m \u001b[1m\u001b[34mSELECT \"users\".* FROM \"users\" INNER JOIN \"relationships\" (...122 more characters)",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 412,
"event": "return",
"thread_id": 4280,
"parent_id": 411,
"elapsed": 0.000014000048395246267,
"elapsed_instrumentation": 0.000046999950427562,
"return_value": {
"class": "Integer",
"value": "222",
"object_id": 445
}
},
{
"id": 413,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "SELECT \"users\".* FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ?",
"database_type": "sqlite"
}
},
{
"id": 414,
"event": "return",
"thread_id": 4280,
"parent_id": 413,
"elapsed": 0.00023,
"elapsed_instrumentation": 0.000014999997802078724
},
{
"id": 415,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 193440,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 42780,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e333ccc8>"
}
},
{
"id": 416,
"event": "return",
"thread_id": 4280,
"parent_id": 415,
"elapsed": 0.00000100000761449337,
"elapsed_instrumentation": 0.00004900002386420965
},
{
"id": 417,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 193440,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 42780,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd8e333ccc8>"
}
},
{
"id": 418,
"event": "return",
"thread_id": 4280,
"parent_id": 417,
"elapsed": 0.00002300000051036477,
"elapsed_instrumentation": 0.00004899996565654874,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd8e333ca20 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd8e333c8b8 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 42820,
"size": 2
}
},
{
"id": 419,
"event": "call",
"thread_id": 4280,
"defined_class": "Logger::LogDevice",
"method_id": "write",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb",
"lineno": 31,
"static": false,
"parameters": [
{
"name": "message",
"class": "String",
"object_id": 193460,
"value": " \u001b[1m\u001b[35m (0.3ms)\u001b[0m \u001b[1m\u001b[31mrollback transaction\u001b[0m\n",
"kind": "req"
}
],
"receiver": {
"class": "Logger::LogDevice",
"object_id": 14060,
"value": "#<Logger::LogDevice:0x00007fd9427561b0>"
}
},
{
"id": 420,
"event": "return",
"thread_id": 4280,
"parent_id": 419,
"elapsed": 0.000014999997802078724,
"elapsed_instrumentation": 0.00004499999340623617,
"return_value": {
"class": "Integer",
"value": "59",
"object_id": 119
}
},
{
"id": 421,
"event": "call",
"thread_id": 4280,
"sql_query": {
"sql": "rollback transaction",
"database_type": "sqlite"
}
},
{
"id": 422,
"event": "return",
"thread_id": 4280,
"parent_id": 421,
"elapsed": 0.000371,
"elapsed_instrumentation": 0.00001999997766688466
},
{
"id": 423,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_before",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 512,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 193480,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 32220,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd951771bb8>"
}
},
{
"id": 424,
"event": "return",
"thread_id": 4280,
"parent_id": 423,
"elapsed": 0.0000019999570213258266,
"elapsed_instrumentation": 0.000060999998822808266
},
{
"id": 425,
"event": "call",
"thread_id": 4280,
"defined_class": "ActiveSupport::Callbacks::CallbackSequence",
"method_id": "invoke_after",
"path": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb",
"lineno": 516,
"static": false,
"parameters": [
{
"name": "arg",
"class": "ActiveSupport::Callbacks::Filters::Environment",
"object_id": 193480,
"value": null,
"kind": "req"
}
],
"receiver": {
"class": "ActiveSupport::Callbacks::CallbackSequence",
"object_id": 32220,
"value": "#<ActiveSupport::Callbacks::CallbackSequence:0x00007fd951771bb8>"
}
},
{
"id": 426,
"event": "return",
"thread_id": 4280,
"parent_id": 425,
"elapsed": 0.000011000025551766157,
"elapsed_instrumentation": 0.00006400002166628838,
"return_value": {
"class": "Array",
"value": "[#<Proc:0x00007fd9517718c0 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor, #<Proc:0x00007fd951771758 /Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesuppor]",
"object_id": 32260,
"size": 2
}
}
],
"version": "1.10.0",
"metadata": {
"app": "sample_app_6th_ed",
"language": {
"name": "ruby",
"engine": "ruby",
"version": "3.0.2"
},
"client": {
"name": "appmap",
"url": "https://github.com/applandinc/appmap-ruby",
"version": "0.94.0"
},
"frameworks": [
{
"name": "rails",
"version": "6.0.4.1"
},
{
"name": "minitest",
"version": "5.11.3"
}
],
"git": {
"repository": "git@github.com:land-of-apps/sample_app_6th_ed.git",
"branch": "appmap-e2e",
"commit": "72ebf1039c6ffb15be206c04133356325bde3273",
"status": [
"M .vscode/settings.json",
"M Gemfile",
"M Gemfile.lock",
"M package.json",
"M yarn.lock",
"?? .idea/",
"?? appmap-findings.json"
],
"git_last_annotated_tag": null,
"git_last_tag": null,
"git_commits_since_last_annotated_tag": null,
"git_commits_since_last_tag": null
},
"name": "Following followers page",
"source_location": "/Users/kgilpin/source/land-of-apps/sample_app_6th_ed/test/integration/following_test.rb:20",
"recorder": {
"name": "minitest",
"type": "tests"
},
"test_status": "succeeded",
"fingerprints": [
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "classDependencies",
"digest": "164100a8c94ea6236a23b1dae57a235fd402b3e3b2b8e91c9e0cccfa01aa29d0",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "classes",
"digest": "a709ba2de5c3723c1020525afd694cc4f33473b7a389a21e6f9a7ac1ef7fee29",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "httpClientRequests",
"digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "httpServerRequests",
"digest": "4afb21324ecc086edf890aa8f2a8b4b0c723574a4f670fc3a128a72f9a543ffe",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "info",
"digest": "53ff007776f04b63dcba7479e2a1ba039eb482bbb036534658200020f4f92148",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "labels",
"digest": "cb2cfa7662d1e4ff5f73d90ddefd00d4cd49a301abea5b67c52644265bc1eae5",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "packageDependencies",
"digest": "c9b9dddd2b13a0542144f8ddd476cba03e85e8874650993c76e610311aca1881",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "packages",
"digest": "c556e2a62d6a3133ea92f72c67575a3e1f9a9a936b8abd3fa08400d3adaa5358",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "sqlNormalized",
"digest": "5a344dbfe78ca023a199282047badce81c928534f98f156c7e9ea9df5757bfd3",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "sqlTables",
"digest": "8bb43aeefc5b65ede30ced12f8f60333c7879c749ed0828b4c0680b1e22d1d65",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "trace",
"digest": "06b67b69b4cfaca6dc9b265ce0e51fd785eba3a3b744848cbaac9ec6443b0781",
"fingerprint_algorithm": "sha256"
},
{
"appmap_digest": "30e5f186599a6cbb797b7eaaa09a79d1622313db39c9522eb64858cdb32a7b33",
"canonicalization_algorithm": "update",
"digest": "d6a400306ff4f7c358da45c4cfdf652c7675b89d4e00efc1d6f2d90cf6b25d7d",
"fingerprint_algorithm": "sha256"
}
]
},
"classMap": [
{
"name": "actionpack",
"type": "package",
"children": [
{
"name": "ActionDispatch",
"type": "class",
"children": [
{
"name": "Integration",
"type": "class",
"children": [
{
"name": "Runner",
"type": "class",
"children": [
{
"name": "before_setup",
"type": "function",
"labels": [
"deserialize.safe",
"lang.eval.safe"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/testing/integration.rb:320"
}
]
}
]
},
{
"name": "Request",
"type": "class",
"children": [
{
"name": "Session",
"type": "class",
"children": [
{
"name": "[]",
"type": "function",
"labels": [
"http.session.read"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb:91"
},
{
"name": "destroy",
"type": "function",
"labels": [
"http.session.write"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb:79"
},
{
"name": "clear",
"type": "function",
"labels": [
"http.session.write",
"http.session.clear"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb:137"
},
{
"name": "[]=",
"type": "function",
"labels": [
"http.session.write"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/request/session.rb:131"
}
]
}
]
},
{
"name": "Cookies",
"type": "class",
"children": [
{
"name": "CookieJar",
"type": "class",
"children": [
{
"name": "update",
"type": "function",
"labels": [
"http.session.write"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb:333"
},
{
"name": "[]",
"type": "function",
"labels": [
"http.session.read"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb:317"
},
{
"name": "[]=",
"type": "function",
"labels": [
"http.session.write"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_dispatch/middleware/cookies.rb:373"
}
]
}
]
}
]
},
{
"name": "ActionController",
"type": "class",
"children": [
{
"name": "Instrumentation",
"type": "class",
"children": [
{
"name": "process_action",
"type": "function",
"labels": [
"mvc.controller"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/instrumentation.rb:19"
},
{
"name": "redirect_to",
"type": "function",
"labels": [
"mvc.controller"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/instrumentation.rb:62"
}
]
},
{
"name": "Renderers",
"type": "class",
"children": [
{
"name": "render_to_body",
"type": "function",
"labels": [
"mvc.render"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionpack-6.0.4.1/lib/action_controller/metal/renderers.rb:141"
}
]
}
]
}
]
},
{
"name": "activesupport",
"type": "package",
"children": [
{
"name": "ActiveSupport",
"type": "class",
"children": [
{
"name": "Callbacks",
"type": "class",
"children": [
{
"name": "CallbackSequence",
"type": "class",
"children": [
{
"name": "invoke_before",
"type": "function",
"labels": [
"mvc.before_action"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb:512"
},
{
"name": "invoke_after",
"type": "function",
"labels": [
"mvc.after_action"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/callbacks.rb:516"
}
]
}
]
},
{
"name": "MessageEncryptor",
"type": "class",
"children": [
{
"name": "encrypt_and_sign",
"type": "function",
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.0.4.1/lib/active_support/message_encryptor.rb:150"
}
]
}
]
}
]
},
{
"name": "logger",
"type": "package",
"children": [
{
"name": "Logger",
"type": "class",
"children": [
{
"name": "LogDevice",
"type": "class",
"children": [
{
"name": "write",
"type": "function",
"labels": [
"log"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/logger/log_device.rb:31"
}
]
}
]
}
]
},
{
"name": "activerecord",
"type": "package",
"children": [
{
"name": "ActiveRecord",
"type": "class",
"children": [
{
"name": "Relation",
"type": "class",
"children": [
{
"name": "records",
"type": "function",
"labels": [
"dao.materialize"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.0.4.1/lib/active_record/relation.rb:249"
}
]
}
]
}
]
},
{
"name": "ruby",
"type": "package",
"children": [
{
"name": "String",
"type": "class",
"children": [
{
"name": "unpack",
"type": "function",
"labels": [
"string.unpack"
],
"static": false,
"location": "<internal:pack>:256"
},
{
"name": "unpack1",
"type": "function",
"labels": [
"string.unpack"
],
"static": false,
"location": "<internal:pack>:280"
}
]
},
{
"name": "Marshal",
"type": "class",
"children": [
{
"name": "load",
"type": "function",
"labels": [
"deserialize.unsafe"
],
"static": true,
"location": "Marshal.load"
}
]
}
]
},
{
"name": "app",
"type": "package",
"children": [
{
"name": "controllers",
"type": "package",
"children": [
{
"name": "SessionsController",
"type": "class",
"children": [
{
"name": "create",
"type": "function",
"labels": [
"access.public",
"security.login"
],
"static": false,
"location": "app/controllers/sessions_controller.rb:9"
}
]
},
{
"name": "UsersController",
"type": "class",
"children": [
{
"name": "followers",
"type": "function",
"static": false,
"location": "app/controllers/users_controller.rb:66"
},
{
"name": "page_number",
"type": "function",
"static": false,
"location": "app/controllers/users_controller.rb:75"
}
]
}
]
},
{
"name": "helpers",
"type": "package",
"children": [
{
"name": "SessionsHelper",
"type": "class",
"children": [
{
"name": "log_in",
"type": "function",
"static": false,
"location": "app/helpers/sessions_helper.rb:4"
},
{
"name": "remember",
"type": "function",
"static": false,
"location": "app/helpers/sessions_helper.rb:9"
},
{
"name": "logged_in?",
"type": "function",
"labels": [
"security.authentication"
],
"static": false,
"location": "app/helpers/sessions_helper.rb:35"
},
{
"name": "current_user",
"type": "function",
"static": false,
"location": "app/helpers/sessions_helper.rb:16"
},
{
"name": "current_user?",
"type": "function",
"static": false,
"location": "app/helpers/sessions_helper.rb:29"
}
]
},
{
"name": "LoggedInHelper",
"type": "class",
"children": [
{
"name": "logged_in_user",
"type": "function",
"labels": [
"security.require_login"
],
"static": false,
"location": "app/helpers/logged_in_helper.rb:10"
}
]
},
{
"name": "UsersHelper",
"type": "class",
"children": [
{
"name": "gravatar_for",
"type": "function",
"static": false,
"location": "app/helpers/users_helper.rb:4"
}
]
},
{
"name": "ApplicationHelper",
"type": "class",
"children": [
{
"name": "full_title",
"type": "function",
"static": false,
"location": "app/helpers/application_helper.rb:4"
}
]
}
]
},
{
"name": "models",
"type": "package",
"children": [
{
"name": "User",
"type": "class",
"children": [
{
"name": "remember",
"type": "function",
"static": false,
"location": "app/models/user.rb:45"
},
{
"name": "new_remember_token",
"type": "function",
"labels": [
"secret"
],
"static": true,
"location": "app/models/user.rb:30"
},
{
"name": "digest",
"type": "function",
"static": true,
"location": "app/models/user.rb:23"
}
]
}
]
},
{
"name": "views",
"type": "package",
"children": [
{
"name": "app_views_users_show_follow_html_erb",
"type": "class",
"children": [
{
"name": "render",
"type": "function",
"labels": [
"mvc.template"
],
"static": true,
"location": "app/views/users/show_follow.html.erb"
}
]
},
{
"name": "app_views_shared__stats_html_erb",
"type": "class",
"children": [
{
"name": "render",
"type": "function",
"labels": [
"mvc.template"
],
"static": true,
"location": "app/views/shared/_stats.html.erb"
}
]
},
{
"name": "app_views_users__user_html_erb",
"type": "class",
"children": [
{
"name": "render",
"type": "function",
"labels": [
"mvc.template"
],
"static": true,
"location": "app/views/users/_user.html.erb"
}
]
},
{
"name": "app_views_layouts__shim_html_erb",
"type": "class",
"children": [
{
"name": "render",
"type": "function",
"labels": [
"mvc.template"
],
"static": true,
"location": "app/views/layouts/_shim.html.erb"
}
]
},
{
"name": "app_views_layouts__header_html_erb",
"type": "class",
"children": [
{
"name": "render",
"type": "function",
"labels": [
"mvc.template"
],
"static": true,
"location": "app/views/layouts/_header.html.erb"
}
]
},
{
"name": "app_views_layouts__footer_html_erb",
"type": "class",
"children": [
{
"name": "render",
"type": "function",
"labels": [
"mvc.template"
],
"static": true,
"location": "app/views/layouts/_footer.html.erb"
}
]
}
]
}
]
},
{
"name": "openssl",
"type": "package",
"children": [
{
"name": "OpenSSL",
"type": "class",
"children": [
{
"name": "Random",
"type": "class",
"children": [
{
"name": "random_bytes",
"type": "function",
"labels": [
"random.secure"
],
"static": true,
"location": "OpenSSL::Random.random_bytes"
}
]
},
{
"name": "Cipher",
"type": "class",
"children": [
{
"name": "encrypt",
"type": "function",
"labels": [
"crypto.encrypt"
],
"static": false,
"location": "OpenSSL::Cipher#encrypt"
},
{
"name": "key=",
"type": "function",
"labels": [
"crypto.set_key"
],
"static": false,
"location": "OpenSSL::Cipher#key="
},
{
"name": "random_iv",
"type": "function",
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/3.0.0/openssl/cipher.rb:55"
},
{
"name": "iv=",
"type": "function",
"labels": [
"crypto.set_iv"
],
"static": false,
"location": "OpenSSL::Cipher#iv="
},
{
"name": "auth_data=",
"type": "function",
"labels": [
"crypto.set_auth_data"
],
"static": false,
"location": "OpenSSL::Cipher#auth_data="
},
{
"name": "update",
"type": "function",
"static": false,
"location": "OpenSSL::Cipher#update"
},
{
"name": "final",
"type": "function",
"labels": [
"crypto.final"
],
"static": false,
"location": "OpenSSL::Cipher#final"
},
{
"name": "decrypt",
"type": "function",
"labels": [
"crypto.decrypt"
],
"static": false,
"location": "OpenSSL::Cipher#decrypt"
},
{
"name": "auth_tag=",
"type": "function",
"labels": [
"crypto.set_auth_tag"
],
"static": false,
"location": "OpenSSL::Cipher#auth_tag="
}
]
}
]
}
]
},
{
"name": "json",
"type": "package",
"children": [
{
"name": "JSON",
"type": "class",
"children": [
{
"name": "Ext",
"type": "class",
"children": [
{
"name": "Generator",
"type": "class",
"children": [
{
"name": "State",
"type": "class",
"children": [
{
"name": "generate",
"type": "function",
"labels": [
"format.json.generate",
"serialize"
],
"static": false,
"location": "JSON::Ext::Generator::State#generate"
}
]
}
]
},
{
"name": "Parser",
"type": "class",
"children": [
{
"name": "parse",
"type": "function",
"labels": [
"format.json.parse",
"deserialize.safe"
],
"static": false,
"location": "JSON::Ext::Parser#parse"
}
]
}
]
}
]
}
]
},
{
"name": "actionview",
"type": "package",
"children": [
{
"name": "ActionView",
"type": "class",
"children": [
{
"name": "Resolver",
"type": "class",
"children": [
{
"name": "find_all",
"type": "function",
"labels": [
"mvc.template.resolver"
],
"static": false,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/actionview-6.0.4.1/lib/action_view/template/resolver.rb:116"
}
]
}
]
}
]
},
{
"name": "sprockets",
"type": "package",
"children": [
{
"name": "Sprockets",
"type": "class",
"children": [
{
"name": "EncodingUtils",
"type": "class",
"children": [
{
"name": "unmarshaled_deflated",
"type": "function",
"labels": [
"deserialize.safe"
],
"static": true,
"location": "/Users/kgilpin/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sprockets-4.0.2/lib/sprockets/encoding_utils.rb:39"
}
]
}
]
}
]
},
{
"type": "database",
"name": "Database",
"children": [
{
"type": "query",
"name": "begin transaction"
},
{
"type": "query",
"name": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = ? LIMIT ?"
},
{
"type": "query",
"name": "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"email\" = ? LIMIT ?"
},
{
"type": "query",
"name": "SAVEPOINT active_record_1"
},
{
"type": "query",
"name": "UPDATE \"users\" SET \"remember_digest\" = ?, \"updated_at\" = ? WHERE \"users\".\"id\" = ?"
},
{
"type": "query",
"name": "RELEASE SAVEPOINT active_record_1"
},
{
"type": "query",
"name": "SELECT COUNT(*) FROM \"microposts\" WHERE \"microposts\".\"user_id\" = ?"
},
{
"type": "query",
"name": "SELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"followed_id\" WHERE \"relationships\".\"follower_id\" = ?"
},
{
"type": "query",
"name": "SELECT COUNT(*) FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ?"
},
{
"type": "query",
"name": "SELECT \"users\".* FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ? LIMIT ? OFFSET ?"
},
{
"type": "query",
"name": "SELECT 1 AS one FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ? LIMIT ?"
},
{
"type": "query",
"name": "SELECT \"users\".* FROM \"users\" INNER JOIN \"relationships\" ON \"users\".\"id\" = \"relationships\".\"follower_id\" WHERE \"relationships\".\"followed_id\" = ?"
},
{
"type": "query",
"name": "rollback transaction"
}
]
},
{
"type": "http",
"name": "HTTP server requests",
"children": [
{
"type": "route",
"name": "POST /login"
},
{
"type": "route",
"name": "GET /users/{id}/followers"
}
]
}
]
}
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="14218px" preserveAspectRatio="none" style="width:3061px;height:14218px;background:#000000;" version="1.1" viewBox="0 0 3061 14218" width="3061px" zoomAndPan="magnify"><defs/><g><rect fill="none" height="3506.0859" style="stroke:#999999;stroke-width:1.0;" width="10" x="176" y="1289.5156"/><rect fill="none" height="6070.1172" style="stroke:#999999;stroke-width:1.0;" width="10" x="176" y="6220.3828"/><rect fill="none" height="506.8594" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="84.2656"/><rect fill="none" height="3429.8203" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="1327.6484"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="1575.5781"/><rect fill="none" height="241.7969" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="1955.7734"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="2273.8359"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="4292.875"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="4414.2734"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="5724.6563"/><rect fill="none" height="5993.8516" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="6258.5156"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="6506.4453"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="6608.7109"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="7731.5625"/><rect fill="none" height="3694.1484" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="8329.4219"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="10122.1953"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="10325.8594"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="11338.1797"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="11584.1094"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="13219.5547"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="160.5313"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="476.7266"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="1022.5859"/><rect fill="none" height="229.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="1491.3125"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="3123.8906"/><rect fill="none" height="776.5234" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="3435.9531"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="4604.9375"/><rect fill="none" height="776.5234" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="4910"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="5800.9219"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="5877.1875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="5953.4531"/><rect fill="none" height="1608.3125" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="6422.1797"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="12099.8359"/><rect fill="none" height="776.5234" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="12404.8984"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="13295.8203"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="13372.0859"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="13890.0781"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="14118.875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="236.7969"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="393.4609"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="667.3906"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="864.0547"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="1213.25"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="1408.0469"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="1797.2422"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="2832.6953"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="2947.0938"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="3207.1563"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="4452.4063"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="4681.2031"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="6144.1172"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="6338.9141"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="7807.8281"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8106.7578"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8531.2188"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8683.75"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8931.5469"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9066.0781"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9200.6094"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9276.875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9449.5391"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="10460.2578"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="10765.3203"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="11045.25"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="11705.5078"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="11947.3047"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="12176.1016"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13448.3516"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13582.8828"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13717.4141"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13966.3438"/><rect fill="none" height="158.5313" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="629.2578"/><rect fill="none" height="158.5313" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="825.9219"/><rect fill="none" height="186.7969" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="9411.4063"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="9813"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="1136.9844"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="2045.0391"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="2121.3047"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="6067.8516"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="6745.2422"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="7438.6328"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="10650.9219"/><rect fill="none" height="2807.6953" style="stroke:#999999;stroke-width:1.0;" width="10" x="1258" y="1759.1094"/><rect fill="none" height="3993.0781" style="stroke:#999999;stroke-width:1.0;" width="10" x="1258" y="8068.625"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1263" y="8235.1563"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="2235.7031"/><rect fill="none" height="1987.9063" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="2388.2344"/><rect fill="none" height="348.0625" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="7637.2969"/><rect fill="none" height="245.7969" style="stroke:#999999;stroke-width:1.0;" width="10" x="1428.5" y="7688.4297"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="8607.4844"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="9678.6016"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10007.7969"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10084.0625"/><rect fill="none" height="125.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10282.7266"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10536.5234"/><rect fill="none" height="216.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="11248.9141"/><rect fill="none" height="125.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1428.5" y="11295.0469"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="11545.9766"/><rect fill="none" height="895.1875" style="stroke:#999999;stroke-width:1.0;" width="10" x="1580" y="2426.3672"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1585" y="2472.5"/><rect fill="none" height="125.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1585" y="2574.7656"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="2617.8984"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3474.0859"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3550.3516"/><rect fill="none" height="242.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3626.6172"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="3672.75"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="3775.0156"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3907.4141"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="4059.9453"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="4136.2109"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="4948.1328"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5024.3984"/><rect fill="none" height="242.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5100.6641"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="5146.7969"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="5249.0625"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5381.4609"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5533.9922"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5610.2578"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="6828.5078"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="6904.7734"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="6981.0391"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7057.3047"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7133.5703"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7209.8359"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7286.1016"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12443.0313"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12519.2969"/><rect fill="none" height="242.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12595.5625"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="12641.6953"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="12743.9609"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12876.3594"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="13028.8906"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="13105.1563"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="3359.6875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="3983.6797"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="4833.7344"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="5457.7266"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="7362.3672"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="7514.8984"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="10841.5859"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="12328.6328"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="12952.625"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="8447.9531"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="8855.2813"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="9889.2656"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="10968.9844"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="11172.6484"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="11871.0391"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="2362" y="10612.7891"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="528" x="328" y="328.0625"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="528" x="328" y="1342.6484"/><rect fill="none" height="73.3984" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1164" x="504" y="2722.1641"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1164" x="504" y="3058.4922"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1184" x="328" y="4227.4766"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="528" x="328" y="6273.5156"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="853" x="328" y="6679.8438"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="328" x="1959" y="8382.5547"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="769" x="1345" y="9613.2031"/><rect fill="none" height="480.7266" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1786" x="328" y="9942.3984"/><rect fill="none" height="187.7969" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1786" x="328" y="11480.5781"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="181" x2="181" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="421" x2="421" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="605" x2="605" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="776" x2="776" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="943" x2="943" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1106" x2="1106" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1263" x2="1263" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1428" x2="1428" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1585" x2="1585" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1747" x2="1747" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1895" x2="1895" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="2036" x2="2036" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="2195" x2="2195" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="2367" x2="2367" y1="44.1328" y2="14175.0078"/><line style="stroke:#999999;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="2536" x2="2536" y1="44.1328" y2="14175.0078"/><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="150" x="106" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="126" x="118" y="28.6016">HTTP server requests</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="150" x="106" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="126" x="118" y="14197.6094">HTTP server requests</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="86" x="378" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="62" x="390" y="28.6016">actionpack</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="86" x="378" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="62" x="390" y="14197.6094">actionpack</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="102" x="554" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="78" x="566" y="28.6016">activesupport</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="102" x="554" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="78" x="566" y="14197.6094">activesupport</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="60" x="746" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="758" y="28.6016">logger</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="60" x="746" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="758" y="14197.6094">logger</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="95" x="896" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="71" x="908" y="28.6016">activerecord</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="95" x="896" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="71" x="908" y="14197.6094">activerecord</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="50" x="1081" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="26" x="1093" y="28.6016">ruby</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="50" x="1081" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="26" x="1093" y="14197.6094">ruby</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="84" x="1221" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="1233" y="28.6016">controllers</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="84" x="1221" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="1233" y="14197.6094">controllers</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="67" x="1395" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="43" x="1407" y="28.6016">helpers</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="67" x="1395" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="43" x="1407" y="14197.6094">helpers</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="66" x="1552" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="42" x="1564" y="28.6016">models</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="66" x="1552" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="42" x="1564" y="14197.6094">models</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="68" x="1713" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="1725" y="28.6016">openssl</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="68" x="1713" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="1725" y="14197.6094">openssl</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="48" x="1871" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="1883" y="28.6016">json</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="48" x="1871" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="1883" y="14197.6094">json</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="55" x="2009" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="31" x="2021" y="28.6016">views</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="55" x="2009" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="31" x="2021" y="14197.6094">views</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="83" x="2154" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="59" x="2166" y="28.6016">actionview</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="83" x="2154" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="59" x="2166" y="14197.6094">actionview</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="80" x="2327" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="56" x="2339" y="28.6016">sprockets</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="80" x="2327" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="56" x="2339" y="14197.6094">sprockets</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="79" x="2497" y="5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="55" x="2509" y="28.6016">Database</text><rect fill="#555555" height="38.1328" rx="4" ry="4" style="stroke:#555555;stroke-width:1.0;" width="79" x="2497" y="14174.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="55" x="2509" y="14197.6094">Database</text><rect fill="none" height="3506.0859" style="stroke:#999999;stroke-width:1.0;" width="10" x="176" y="1289.5156"/><rect fill="none" height="6070.1172" style="stroke:#999999;stroke-width:1.0;" width="10" x="176" y="6220.3828"/><rect fill="none" height="506.8594" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="84.2656"/><rect fill="none" height="3429.8203" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="1327.6484"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="1575.5781"/><rect fill="none" height="241.7969" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="1955.7734"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="2273.8359"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="4292.875"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="4414.2734"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="5724.6563"/><rect fill="none" height="5993.8516" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="6258.5156"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="6506.4453"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="6608.7109"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="7731.5625"/><rect fill="none" height="3694.1484" style="stroke:#999999;stroke-width:1.0;" width="10" x="421" y="8329.4219"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="10122.1953"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="10325.8594"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="11338.1797"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="426" y="11584.1094"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="416" y="13219.5547"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="160.5313"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="476.7266"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="1022.5859"/><rect fill="none" height="229.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="1491.3125"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="3123.8906"/><rect fill="none" height="776.5234" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="3435.9531"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="4604.9375"/><rect fill="none" height="776.5234" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="4910"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="5800.9219"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="5877.1875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="5953.4531"/><rect fill="none" height="1608.3125" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="6422.1797"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="12099.8359"/><rect fill="none" height="776.5234" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="12404.8984"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="13295.8203"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="13372.0859"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="13890.0781"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="600" y="14118.875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="236.7969"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="393.4609"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="667.3906"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="864.0547"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="1213.25"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="1408.0469"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="1797.2422"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="2832.6953"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="2947.0938"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="3207.1563"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="4452.4063"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="4681.2031"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="6144.1172"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="6338.9141"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="7807.8281"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8106.7578"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8531.2188"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8683.75"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="8931.5469"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9066.0781"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9200.6094"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9276.875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="9449.5391"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="10460.2578"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="10765.3203"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="11045.25"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="11705.5078"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="11947.3047"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="12176.1016"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13448.3516"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13582.8828"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13717.4141"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="771" y="13966.3438"/><rect fill="none" height="158.5313" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="629.2578"/><rect fill="none" height="158.5313" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="825.9219"/><rect fill="none" height="186.7969" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="9411.4063"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="938.5" y="9813"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="1136.9844"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="2045.0391"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="2121.3047"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="6067.8516"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="6745.2422"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="7438.6328"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1101" y="10650.9219"/><rect fill="none" height="2807.6953" style="stroke:#999999;stroke-width:1.0;" width="10" x="1258" y="1759.1094"/><rect fill="none" height="3993.0781" style="stroke:#999999;stroke-width:1.0;" width="10" x="1258" y="8068.625"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1263" y="8235.1563"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="2235.7031"/><rect fill="none" height="1987.9063" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="2388.2344"/><rect fill="none" height="348.0625" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="7637.2969"/><rect fill="none" height="245.7969" style="stroke:#999999;stroke-width:1.0;" width="10" x="1428.5" y="7688.4297"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="8607.4844"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="9678.6016"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10007.7969"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10084.0625"/><rect fill="none" height="125.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10282.7266"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="10536.5234"/><rect fill="none" height="216.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="11248.9141"/><rect fill="none" height="125.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1428.5" y="11295.0469"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1423.5" y="11545.9766"/><rect fill="none" height="895.1875" style="stroke:#999999;stroke-width:1.0;" width="10" x="1580" y="2426.3672"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1585" y="2472.5"/><rect fill="none" height="125.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="1585" y="2574.7656"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="2617.8984"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3474.0859"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3550.3516"/><rect fill="none" height="242.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3626.6172"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="3672.75"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="3775.0156"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="3907.4141"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="4059.9453"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="4136.2109"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="4948.1328"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5024.3984"/><rect fill="none" height="242.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5100.6641"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="5146.7969"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="5249.0625"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5381.4609"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5533.9922"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="5610.2578"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="6828.5078"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="6904.7734"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="6981.0391"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7057.3047"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7133.5703"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7209.8359"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="7286.1016"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12443.0313"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12519.2969"/><rect fill="none" height="242.6641" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12595.5625"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="12641.6953"/><rect fill="none" height="49.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1747" y="12743.9609"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="12876.3594"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="13028.8906"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1742" y="13105.1563"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="3359.6875"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="3983.6797"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="4833.7344"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="5457.7266"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="7362.3672"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="7514.8984"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="10841.5859"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="12328.6328"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="1890" y="12952.625"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="8447.9531"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="8855.2813"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="9889.2656"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="10968.9844"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="11172.6484"/><rect fill="none" height="38.1328" style="stroke:#999999;stroke-width:1.0;" width="10" x="2190.5" y="11871.0391"/><rect fill="none" height="114.3984" style="stroke:#999999;stroke-width:1.0;" width="10" x="2362" y="10612.7891"/><polygon fill="#4362B1" points="404,80.2656,414,84.2656,404,88.2656,408,84.2656" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="410" y1="84.2656" y2="84.2656"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="76" x="12" y="74.7344">before_setup</text><polygon fill="#4362B1" points="593,118.3984,603,122.3984,593,126.3984,597,122.3984" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="599" y1="122.3984" y2="122.3984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="438" y="112.8672">invoke_before</text><polygon fill="#4362B1" points="588,156.5313,598,160.5313,588,164.5313,592,160.5313" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="594" y1="160.5313" y2="160.5313"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="438" y="151">invoke_after</text><polygon fill="#4362B1" points="437,194.6641,427,198.6641,437,202.6641,433,198.6641" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="604" y1="198.6641" y2="198.6641"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="448" y="189.1328">array</text><polygon fill="#4362B1" points="759,232.7969,769,236.7969,759,240.7969,763,236.7969" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="765" y1="236.7969" y2="236.7969"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="438" y="227.2656">write</text><polygon fill="#4362B1" points="437,270.9297,427,274.9297,437,278.9297,433,274.9297" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="775" y1="274.9297" y2="274.9297"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="448" y="265.3984">integer</text><polygon fill="#4362B1" points="2524.5,309.0625,2534.5,313.0625,2524.5,317.0625,2528.5,313.0625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="2530.5" y1="313.0625" y2="313.0625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="99" x="438" y="303.5313">begin transaction</text><path d="M332,328.0625 L411,328.0625 L411,344.1953 L401,354.1953 L328,354.1953 L328,332.0625 A4,4 0 0 1 332,328.0625 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="528" x="328" y="328.0625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="345.6641">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="346.6641">[3 times]</text><polygon fill="#4362B1" points="759,389.4609,769,393.4609,759,397.4609,763,393.4609" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="765" y1="393.4609" y2="393.4609"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="438" y="383.9297">write</text><polygon fill="#4362B1" points="437,427.5938,427,431.5938,437,435.5938,433,431.5938" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="775" y1="431.5938" y2="431.5938"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="448" y="422.0625">integer</text><polygon fill="#4362B1" points="588,472.7266,598,476.7266,588,480.7266,592,476.7266" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="594" y1="476.7266" y2="476.7266"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="438" y="467.1953">invoke_before</text><polygon fill="#4362B1" points="437,510.8594,427,514.8594,437,518.8594,433,514.8594" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="604" y1="514.8594" y2="514.8594"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="448" y="505.3281">array</text><polygon fill="#4362B1" points="593,548.9922,603,552.9922,593,556.9922,597,552.9922" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="599" y1="552.9922" y2="552.9922"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="438" y="543.4609">invoke_after</text><polygon fill="#4362B1" points="11,587.125,1,591.125,11,595.125,7,591.125" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="420" y1="591.125" y2="591.125"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="46" x="22" y="581.5938">boolean</text><polygon fill="#4362B1" points="926.5,625.2578,936.5,629.2578,926.5,633.2578,930.5,629.2578" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="932.5" y1="629.2578" y2="629.2578"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="12" y="619.7266">records</text><polygon fill="#4362B1" points="792,663.3906,782,667.3906,792,671.3906,788,667.3906" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="937.5" y1="667.3906" y2="667.3906"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="657.8594">write</text><polygon fill="#4362B1" points="926.5,701.5234,936.5,705.5234,926.5,709.5234,930.5,705.5234" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="932.5" y1="705.5234" y2="705.5234"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="695.9922">integer</text><polygon fill="#4362B1" points="2524.5,742.6563,2534.5,746.6563,2524.5,750.6563,2528.5,746.6563" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="948.5" x2="2530.5" y1="746.6563" y2="746.6563"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="300" x="960.5" y="737.125">SELECT "users".* FROM "users" WHERE "users"."id" =</text><path d="M2541,722.5234 L2541,748.5234 A4,4 0 0 0 2545,752.5234 L2920,752.5234 A4,4 0 0 0 2924,748.5234 L2924,728.5234 L2914,718.5234 L2545,718.5234 A4,4 0 0 0 2541,722.5234 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2914,718.5234 L2914,726.5234 A2,2 0 0 0 2916,728.5234 L2924,728.5234 L2914,718.5234 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="352" x="2552" y="740.125">SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?</text><polygon fill="#4362B1" points="11,783.7891,1,787.7891,11,791.7891,7,787.7891" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="942.5" y1="787.7891" y2="787.7891"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="778.2578">array</text><polygon fill="#4362B1" points="926.5,821.9219,936.5,825.9219,926.5,829.9219,930.5,825.9219" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="932.5" y1="825.9219" y2="825.9219"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="12" y="816.3906">records</text><polygon fill="#4362B1" points="792,860.0547,782,864.0547,792,868.0547,788,864.0547" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="937.5" y1="864.0547" y2="864.0547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="854.5234">write</text><polygon fill="#4362B1" points="926.5,898.1875,936.5,902.1875,926.5,906.1875,930.5,902.1875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="932.5" y1="902.1875" y2="902.1875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="892.6563">integer</text><polygon fill="#4362B1" points="2524.5,939.3203,2534.5,943.3203,2524.5,947.3203,2528.5,943.3203" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="948.5" x2="2530.5" y1="943.3203" y2="943.3203"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="300" x="960.5" y="933.7891">SELECT "users".* FROM "users" WHERE "users"."id" =</text><path d="M2541,919.1875 L2541,945.1875 A4,4 0 0 0 2545,949.1875 L2920,949.1875 A4,4 0 0 0 2924,945.1875 L2924,925.1875 L2914,915.1875 L2545,915.1875 A4,4 0 0 0 2541,919.1875 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2914,915.1875 L2914,923.1875 A2,2 0 0 0 2916,925.1875 L2924,925.1875 L2914,915.1875 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="352" x="2552" y="936.7891">SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?</text><polygon fill="#4362B1" points="11,980.4531,1,984.4531,11,988.4531,7,984.4531" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="942.5" y1="984.4531" y2="984.4531"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="974.9219">array</text><polygon fill="#4362B1" points="588,1018.5859,598,1022.5859,588,1026.5859,592,1022.5859" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="1022.5859" y2="1022.5859"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="12" y="1013.0547">invoke_before</text><polygon fill="#4362B1" points="11,1056.7188,1,1060.7188,11,1064.7188,7,1060.7188" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="1060.7188" y2="1060.7188"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="1051.1875">array</text><polygon fill="#4362B1" points="593,1094.8516,603,1098.8516,593,1102.8516,597,1098.8516" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="599" y1="1098.8516" y2="1098.8516"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="12" y="1089.3203">invoke_after</text><polygon fill="#4362B1" points="1089,1132.9844,1099,1136.9844,1089,1140.9844,1093,1136.9844" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="1095" y1="1136.9844" y2="1136.9844"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="42" x="12" y="1127.4531">unpack</text><polygon fill="#4362B1" points="11,1171.1172,1,1175.1172,11,1179.1172,7,1175.1172" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="1105" y1="1175.1172" y2="1175.1172"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="1165.5859">array</text><polygon fill="#4362B1" points="759,1209.25,769,1213.25,759,1217.25,763,1213.25" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="765" y1="1213.25" y2="1213.25"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="12" y="1203.7188">write</text><polygon fill="#4362B1" points="11,1247.3828,1,1251.3828,11,1255.3828,7,1251.3828" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="775" y1="1251.3828" y2="1251.3828"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="22" y="1241.8516">integer</text><polygon fill="#4362B1" points="164,1285.5156,174,1289.5156,164,1293.5156,168,1289.5156" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="170" y1="1289.5156" y2="1289.5156"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="67" x="12" y="1279.9844">POST /login</text><polygon fill="#4362B1" points="404,1323.6484,414,1327.6484,404,1331.6484,408,1327.6484" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="186" x2="410" y1="1327.6484" y2="1327.6484"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="85" x="198" y="1318.1172">process_action</text><path d="M332,1342.6484 L411,1342.6484 L411,1358.7813 L401,1368.7813 L328,1368.7813 L328,1346.6484 A4,4 0 0 1 332,1342.6484 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="528" x="328" y="1342.6484"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="1360.25">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="1361.25">[2 times]</text><polygon fill="#4362B1" points="759,1404.0469,769,1408.0469,759,1412.0469,763,1408.0469" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="765" y1="1408.0469" y2="1408.0469"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="438" y="1398.5156">write</text><polygon fill="#4362B1" points="437,1442.1797,427,1446.1797,437,1450.1797,433,1446.1797" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="775" y1="1446.1797" y2="1446.1797"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="448" y="1436.6484">integer</text><polygon fill="#4362B1" points="588,1487.3125,598,1491.3125,588,1495.3125,592,1491.3125" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="594" y1="1491.3125" y2="1491.3125"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="438" y="1481.7813">invoke_before</text><polygon fill="#4362B1" points="437,1525.4453,427,1529.4453,437,1533.4453,433,1529.4453" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="599" y1="1529.4453" y2="1529.4453"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="448" y="1519.9141">[]</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="473" y1="1562.5781" y2="1562.5781"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="473" x2="473" y1="1562.5781" y2="1575.5781"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="432" x2="473" y1="1575.5781" y2="1575.5781"/><polygon fill="#4362B1" points="442,1571.5781,432,1575.5781,442,1579.5781,438,1575.5781" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="443" y="1553.0469">update</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="431" y1="1623.7109" y2="1623.7109"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="389" y1="1623.7109" y2="1636.7109"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="436" y1="1636.7109" y2="1636.7109"/><polygon fill="#4362B1" points="416,1632.7109,426,1636.7109,416,1640.7109,420,1636.7109" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="390" y="1614.1797">object</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="468" y1="1669.8438" y2="1669.8438"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="468" x2="468" y1="1669.8438" y2="1682.8438"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="427" x2="468" y1="1682.8438" y2="1682.8438"/><polygon fill="#4362B1" points="437,1678.8438,427,1682.8438,437,1686.8438,433,1682.8438" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="438" y="1660.3125">[]</text><polygon fill="#4362B1" points="437,1716.9766,427,1720.9766,437,1724.9766,433,1720.9766" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="604" y1="1720.9766" y2="1720.9766"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="448" y="1711.4453">array</text><polygon fill="#4362B1" points="1246,1755.1094,1256,1759.1094,1246,1763.1094,1250,1759.1094" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1252" y1="1759.1094" y2="1759.1094"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="438" y="1749.5781">create</text><polygon fill="#4362B1" points="792,1793.2422,782,1797.2422,792,1801.2422,788,1797.2422" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="1257" y1="1797.2422" y2="1797.2422"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="1787.7109">write</text><polygon fill="#4362B1" points="1246,1831.375,1256,1835.375,1246,1839.375,1250,1835.375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="1252" y1="1835.375" y2="1835.375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="1825.8438">integer</text><polygon fill="#4362B1" points="2524.5,1872.5078,2534.5,1876.5078,2524.5,1880.5078,2528.5,1876.5078" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1268" x2="2530.5" y1="1876.5078" y2="1876.5078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="302" x="1280" y="1866.9766">SELECT "users".* FROM "users" WHERE "users"."email</text><path d="M2541,1852.375 L2541,1878.375 A4,4 0 0 0 2545,1882.375 L2940,1882.375 A4,4 0 0 0 2944,1878.375 L2944,1858.375 L2934,1848.375 L2545,1848.375 A4,4 0 0 0 2541,1852.375 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2934,1848.375 L2934,1856.375 A2,2 0 0 0 2936,1858.375 L2944,1858.375 L2934,1848.375 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="372" x="2552" y="1869.9766">SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ?</text><polygon fill="#4362B1" points="437,1913.6406,427,1917.6406,437,1921.6406,433,1917.6406" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="1257" y1="1917.6406" y2="1917.6406"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="448" y="1908.1094">[]</text><polygon fill="#4362B1" points="442,1951.7734,432,1955.7734,442,1959.7734,438,1955.7734" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="1257" y1="1955.7734" y2="1955.7734"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="43" x="453" y="1946.2422">destroy</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="473" y1="1993.9063" y2="1993.9063"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="473" x2="473" y1="1993.9063" y2="2006.9063"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="432" x2="473" y1="2006.9063" y2="2006.9063"/><polygon fill="#4362B1" points="442,2002.9063,432,2006.9063,442,2010.9063,438,2006.9063" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="443" y="1984.375">clear</text><polygon fill="#4362B1" points="1089,2041.0391,1099,2045.0391,1089,2049.0391,1093,2045.0391" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="1095" y1="2045.0391" y2="2045.0391"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="42" x="443" y="2035.5078">unpack</text><polygon fill="#4362B1" points="442,2079.1719,432,2083.1719,442,2087.1719,438,2083.1719" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="436" x2="1105" y1="2083.1719" y2="2083.1719"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="453" y="2073.6406">array</text><polygon fill="#4362B1" points="1089,2117.3047,1099,2121.3047,1089,2125.3047,1093,2121.3047" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="1095" y1="2121.3047" y2="2121.3047"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="42" x="443" y="2111.7734">unpack</text><polygon fill="#4362B1" points="442,2155.4375,432,2159.4375,442,2163.4375,438,2159.4375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="436" x2="1105" y1="2159.4375" y2="2159.4375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="453" y="2149.9063">array</text><polygon fill="#4362B1" points="1246,2193.5703,1256,2197.5703,1246,2201.5703,1250,2197.5703" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="426" x2="1252" y1="2197.5703" y2="2197.5703"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="46" x="438" y="2188.0391">boolean</text><polygon fill="#4362B1" points="1411.5,2231.7031,1421.5,2235.7031,1411.5,2239.7031,1415.5,2235.7031" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1268" x2="1417.5" y1="2235.7031" y2="2235.7031"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="33" x="1280" y="2226.1719">log_in</text><polygon fill="#4362B1" points="442,2269.8359,432,2273.8359,442,2277.8359,438,2273.8359" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="1422.5" y1="2273.8359" y2="2273.8359"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="18" x="453" y="2264.3047">[]=</text><polygon fill="#4362B1" points="1411.5,2307.9688,1421.5,2311.9688,1411.5,2315.9688,1415.5,2311.9688" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="426" x2="1417.5" y1="2311.9688" y2="2311.9688"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="438" y="2302.4375">integer</text><polygon fill="#4362B1" points="1279,2346.1016,1269,2350.1016,1279,2354.1016,1275,2350.1016" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1273" x2="1427.5" y1="2350.1016" y2="2350.1016"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="1290" y="2340.5703">integer</text><polygon fill="#4362B1" points="1411.5,2384.2344,1421.5,2388.2344,1411.5,2392.2344,1415.5,2388.2344" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1268" x2="1417.5" y1="2388.2344" y2="2388.2344"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="61" x="1280" y="2378.7031">remember</text><polygon fill="#4362B1" points="1568,2422.3672,1578,2426.3672,1568,2430.3672,1572,2426.3672" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1433.5" x2="1574" y1="2426.3672" y2="2426.3672"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="61" x="1445.5" y="2416.8359">remember</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1590" x2="1637" y1="2459.5" y2="2459.5"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1637" x2="1637" y1="2459.5" y2="2472.5"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1596" x2="1637" y1="2472.5" y2="2472.5"/><polygon fill="#4362B1" points="1606,2468.5,1596,2472.5,1606,2476.5,1602,2472.5" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="128" x="1607" y="2449.9688">new_remember_token</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1553" x2="1595" y1="2520.6328" y2="2520.6328"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1553" x2="1553" y1="2520.6328" y2="2533.6328"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1553" x2="1600" y1="2533.6328" y2="2533.6328"/><polygon fill="#4362B1" points="1580,2529.6328,1590,2533.6328,1580,2537.6328,1584,2533.6328" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1558" y="2511.1016">string</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1590" x2="1637" y1="2561.7656" y2="2561.7656"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1637" x2="1637" y1="2561.7656" y2="2574.7656"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1596" x2="1637" y1="2574.7656" y2="2574.7656"/><polygon fill="#4362B1" points="1606,2570.7656,1596,2574.7656,1606,2578.7656,1602,2574.7656" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="35" x="1607" y="2552.2344">digest</text><polygon fill="#4362B1" points="1730,2613.8984,1740,2617.8984,1730,2621.8984,1734,2617.8984" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1595" x2="1736" y1="2617.8984" y2="2617.8984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="82" x="1607" y="2608.3672">random_bytes</text><polygon fill="#4362B1" points="1606,2652.0313,1596,2656.0313,1606,2660.0313,1602,2656.0313" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1600" x2="1746" y1="2656.0313" y2="2656.0313"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1617" y="2646.5">string</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1553" x2="1595" y1="2699.1641" y2="2699.1641"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1553" x2="1553" y1="2699.1641" y2="2712.1641"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1553" x2="1600" y1="2712.1641" y2="2712.1641"/><polygon fill="#4362B1" points="1580,2708.1641,1590,2712.1641,1580,2716.1641,1584,2712.1641" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="1554" y="2689.6328">object</text><path d="M508,2722.1641 L587,2722.1641 L587,2738.2969 L577,2748.2969 L504,2748.2969 L504,2726.1641 A4,4 0 0 1 508,2722.1641 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="73.3984" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1164" x="504" y="2722.1641"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="524" y="2739.7656">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="607" y="2740.7656">[3 times]</text><polygon fill="#4362B1" points="616,2783.5625,606,2787.5625,616,2791.5625,612,2787.5625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1579" y1="2787.5625" y2="2787.5625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="627" y="2778.0313">invoke_before</text><polygon fill="#4362B1" points="792,2828.6953,782,2832.6953,792,2836.6953,788,2832.6953" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="1579" y1="2832.6953" y2="2832.6953"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="2823.1641">write</text><polygon fill="#4362B1" points="1568,2866.8281,1578,2870.8281,1568,2874.8281,1572,2870.8281" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="1574" y1="2870.8281" y2="2870.8281"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="2861.2969">integer</text><polygon fill="#4362B1" points="2524.5,2904.9609,2534.5,2908.9609,2524.5,2912.9609,2528.5,2908.9609" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1590" x2="2530.5" y1="2908.9609" y2="2908.9609"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="160" x="1602" y="2899.4297">SAVEPOINT active_record_1</text><polygon fill="#4362B1" points="792,2943.0938,782,2947.0938,792,2951.0938,788,2947.0938" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="1579" y1="2947.0938" y2="2947.0938"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="2937.5625">write</text><polygon fill="#4362B1" points="1568,2981.2266,1578,2985.2266,1568,2989.2266,1572,2985.2266" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="1574" y1="2985.2266" y2="2985.2266"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="2975.6953">integer</text><polygon fill="#4362B1" points="2524.5,3029.4258,2534.5,3033.4258,2524.5,3037.4258,2528.5,3033.4258" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1590" x2="2530.5" y1="3033.4258" y2="3033.4258"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="313" x="1602" y="3023.8945">UPDATE "users" SET "remember_digest" = ?, "updated</text><path d="M2541,3002.2266 L2541,3042.2266 A4,4 0 0 0 2545,3046.2266 L3050,3046.2266 A4,4 0 0 0 3054,3042.2266 L3054,3008.2266 L3044,2998.2266 L2545,2998.2266 A4,4 0 0 0 2541,3002.2266 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M3044,2998.2266 L3044,3006.2266 A2,2 0 0 0 3046,3008.2266 L3054,3008.2266 L3044,2998.2266 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="482" x="2552" y="3019.8281">UPDATE "users" SET "remember_digest" = ?, "updated_at" = ? WHERE "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="5" x="2552" y="3033.9609">?</text><path d="M508,3058.4922 L587,3058.4922 L587,3074.625 L577,3084.625 L504,3084.625 L504,3062.4922 A4,4 0 0 1 508,3058.4922 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1164" x="504" y="3058.4922"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="524" y="3076.0938">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="607" y="3077.0938">[3 times]</text><polygon fill="#4362B1" points="621,3119.8906,611,3123.8906,621,3127.8906,617,3123.8906" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="615" x2="1579" y1="3123.8906" y2="3123.8906"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="632" y="3114.3594">invoke_after</text><polygon fill="#4362B1" points="1568,3158.0234,1578,3162.0234,1568,3166.0234,1572,3162.0234" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="605" x2="1574" y1="3162.0234" y2="3162.0234"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="617" y="3152.4922">array</text><polygon fill="#4362B1" points="792,3203.1563,782,3207.1563,792,3211.1563,788,3207.1563" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="1579" y1="3207.1563" y2="3207.1563"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="3197.625">write</text><polygon fill="#4362B1" points="1568,3241.2891,1578,3245.2891,1568,3249.2891,1572,3245.2891" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="1574" y1="3245.2891" y2="3245.2891"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="3235.7578">integer</text><polygon fill="#4362B1" points="2524.5,3279.4219,2534.5,3283.4219,2524.5,3287.4219,2528.5,3283.4219" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1590" x2="2530.5" y1="3283.4219" y2="3283.4219"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="213" x="1602" y="3273.8906">RELEASE SAVEPOINT active_record_1</text><polygon fill="#4362B1" points="1444.5,3317.5547,1434.5,3321.5547,1444.5,3325.5547,1440.5,3321.5547" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1438.5" x2="1584" y1="3321.5547" y2="3321.5547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="46" x="1455.5" y="3312.0234">boolean</text><polygon fill="#4362B1" points="1878,3355.6875,1888,3359.6875,1878,3363.6875,1882,3359.6875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1433.5" x2="1884" y1="3359.6875" y2="3359.6875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="1445.5" y="3350.1563">generate</text><polygon fill="#4362B1" points="1444.5,3393.8203,1434.5,3397.8203,1444.5,3401.8203,1440.5,3397.8203" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1438.5" x2="1894" y1="3397.8203" y2="3397.8203"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1455.5" y="3388.2891">string</text><polygon fill="#4362B1" points="621,3431.9531,611,3435.9531,621,3439.9531,617,3435.9531" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="615" x2="1422.5" y1="3435.9531" y2="3435.9531"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="100" x="632" y="3426.4219">encrypt_and_sign</text><polygon fill="#4362B1" points="1730,3470.0859,1740,3474.0859,1730,3478.0859,1734,3474.0859" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="3474.0859" y2="3474.0859"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="43" x="622" y="3464.5547">encrypt</text><polygon fill="#4362B1" points="621,3508.2188,611,3512.2188,621,3516.2188,617,3512.2188" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="3512.2188" y2="3512.2188"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="632" y="3502.6875">object</text><polygon fill="#4362B1" points="1730,3546.3516,1740,3550.3516,1730,3554.3516,1734,3550.3516" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="3550.3516" y2="3550.3516"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="622" y="3540.8203">key=</text><polygon fill="#4362B1" points="621,3584.4844,611,3588.4844,621,3592.4844,617,3588.4844" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="3588.4844" y2="3588.4844"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="3578.9531">string</text><polygon fill="#4362B1" points="1730,3622.6172,1740,3626.6172,1730,3630.6172,1734,3626.6172" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="3626.6172" y2="3626.6172"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="622" y="3617.0859">random_iv</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1752" x2="1799" y1="3659.75" y2="3659.75"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1799" x2="1799" y1="3659.75" y2="3672.75"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1758" x2="1799" y1="3672.75" y2="3672.75"/><polygon fill="#4362B1" points="1768,3668.75,1758,3672.75,1768,3676.75,1764,3672.75" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="82" x="1769" y="3650.2188">random_bytes</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1757" y1="3720.8828" y2="3720.8828"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1715" y1="3720.8828" y2="3733.8828"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1762" y1="3733.8828" y2="3733.8828"/><polygon fill="#4362B1" points="1742,3729.8828,1752,3733.8828,1742,3737.8828,1746,3733.8828" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1720" y="3711.3516">string</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1752" x2="1799" y1="3762.0156" y2="3762.0156"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1799" x2="1799" y1="3762.0156" y2="3775.0156"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1758" x2="1799" y1="3775.0156" y2="3775.0156"/><polygon fill="#4362B1" points="1768,3771.0156,1758,3775.0156,1768,3779.0156,1764,3775.0156" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="19" x="1769" y="3752.4844">iv=</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1757" y1="3823.1484" y2="3823.1484"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1715" y1="3823.1484" y2="3836.1484"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1762" y1="3836.1484" y2="3836.1484"/><polygon fill="#4362B1" points="1742,3832.1484,1752,3836.1484,1742,3840.1484,1746,3836.1484" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1720" y="3813.6172">string</text><polygon fill="#4362B1" points="621,3865.2813,611,3869.2813,621,3873.2813,617,3869.2813" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="3869.2813" y2="3869.2813"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="3859.75">string</text><polygon fill="#4362B1" points="1730,3903.4141,1740,3907.4141,1730,3911.4141,1734,3907.4141" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="3907.4141" y2="3907.4141"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="67" x="622" y="3897.8828">auth_data=</text><polygon fill="#4362B1" points="621,3941.5469,611,3945.5469,621,3949.5469,617,3945.5469" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="3945.5469" y2="3945.5469"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="3936.0156">string</text><polygon fill="#4362B1" points="1878,3979.6797,1888,3983.6797,1878,3987.6797,1882,3983.6797" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1884" y1="3983.6797" y2="3983.6797"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="622" y="3974.1484">generate</text><polygon fill="#4362B1" points="621,4017.8125,611,4021.8125,621,4025.8125,617,4021.8125" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1894" y1="4021.8125" y2="4021.8125"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="4012.2813">string</text><polygon fill="#4362B1" points="1730,4055.9453,1740,4059.9453,1730,4063.9453,1734,4059.9453" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="4059.9453" y2="4059.9453"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="622" y="4050.4141">update</text><polygon fill="#4362B1" points="621,4094.0781,611,4098.0781,621,4102.0781,617,4098.0781" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="4098.0781" y2="4098.0781"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="4088.5469">string</text><polygon fill="#4362B1" points="1730,4132.2109,1740,4136.2109,1730,4140.2109,1734,4136.2109" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="4136.2109" y2="4136.2109"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="622" y="4126.6797">final</text><polygon fill="#4362B1" points="621,4170.3438,611,4174.3438,621,4178.3438,617,4174.3438" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="4174.3438" y2="4174.3438"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="4164.8125">string</text><polygon fill="#4362B1" points="1411.5,4208.4766,1421.5,4212.4766,1411.5,4216.4766,1415.5,4212.4766" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="605" x2="1417.5" y1="4212.4766" y2="4212.4766"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="617" y="4202.9453">string</text><path d="M332,4227.4766 L411,4227.4766 L411,4243.6094 L401,4253.6094 L328,4253.6094 L328,4231.4766 A4,4 0 0 1 332,4227.4766 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1184" x="328" y="4227.4766"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="4245.0781">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="4246.0781">[2 times]</text><polygon fill="#4362B1" points="442,4288.875,432,4292.875,442,4296.875,438,4292.875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="1422.5" y1="4292.875" y2="4292.875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="18" x="453" y="4283.3438">[]=</text><polygon fill="#4362B1" points="1411.5,4327.0078,1421.5,4331.0078,1411.5,4335.0078,1415.5,4331.0078" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="426" x2="1417.5" y1="4331.0078" y2="4331.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="438" y="4321.4766">string</text><polygon fill="#4362B1" points="1279,4372.1406,1269,4376.1406,1279,4380.1406,1275,4376.1406" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1273" x2="1427.5" y1="4376.1406" y2="4376.1406"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1290" y="4366.6094">string</text><polygon fill="#4362B1" points="442,4410.2734,432,4414.2734,442,4418.2734,438,4414.2734" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="1257" y1="4414.2734" y2="4414.2734"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="62" x="453" y="4404.7422">redirect_to</text><polygon fill="#4362B1" points="759,4448.4063,769,4452.4063,759,4456.4063,763,4452.4063" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="765" y1="4452.4063" y2="4452.4063"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="443" y="4442.875">write</text><polygon fill="#4362B1" points="442,4486.5391,432,4490.5391,442,4494.5391,438,4490.5391" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="436" x2="775" y1="4490.5391" y2="4490.5391"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="453" y="4481.0078">integer</text><polygon fill="#4362B1" points="1246,4524.6719,1256,4528.6719,1246,4532.6719,1250,4528.6719" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="426" x2="1252" y1="4528.6719" y2="4528.6719"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="438" y="4519.1406">string</text><polygon fill="#4362B1" points="437,4562.8047,427,4566.8047,437,4570.8047,433,4566.8047" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1262" y1="4566.8047" y2="4566.8047"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="4557.2734">string</text><polygon fill="#4362B1" points="588,4600.9375,598,4604.9375,588,4608.9375,592,4604.9375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="594" y1="4604.9375" y2="4604.9375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="438" y="4595.4063">invoke_after</text><polygon fill="#4362B1" points="437,4639.0703,427,4643.0703,437,4647.0703,433,4643.0703" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="604" y1="4643.0703" y2="4643.0703"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="448" y="4633.5391">array</text><polygon fill="#4362B1" points="759,4677.2031,769,4681.2031,759,4685.2031,763,4681.2031" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="765" y1="4681.2031" y2="4681.2031"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="438" y="4671.6719">write</text><polygon fill="#4362B1" points="437,4715.3359,427,4719.3359,437,4723.3359,433,4719.3359" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="775" y1="4719.3359" y2="4719.3359"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="448" y="4709.8047">integer</text><polygon fill="#4362B1" points="197,4753.4688,187,4757.4688,197,4761.4688,193,4757.4688" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="191" x2="420" y1="4757.4688" y2="4757.4688"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="208" y="4747.9375">string</text><polygon fill="#4362B1" points="11,4791.6016,1,4795.6016,11,4799.6016,7,4795.6016" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="180" y1="4795.6016" y2="4795.6016"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="22" y="4786.0703">302</text><polygon fill="#4362B1" points="1878,4829.7344,1888,4833.7344,1878,4837.7344,1882,4833.7344" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="1884" y1="4833.7344" y2="4833.7344"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="12" y="4824.2031">generate</text><polygon fill="#4362B1" points="11,4867.8672,1,4871.8672,11,4875.8672,7,4871.8672" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="1894" y1="4871.8672" y2="4871.8672"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="22" y="4862.3359">string</text><polygon fill="#4362B1" points="588,4906,598,4910,588,4914,592,4910" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="4910" y2="4910"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="100" x="12" y="4900.4688">encrypt_and_sign</text><polygon fill="#4362B1" points="1730,4944.1328,1740,4948.1328,1730,4952.1328,1734,4948.1328" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="4948.1328" y2="4948.1328"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="43" x="622" y="4938.6016">encrypt</text><polygon fill="#4362B1" points="621,4982.2656,611,4986.2656,621,4990.2656,617,4986.2656" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="4986.2656" y2="4986.2656"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="95" x="632" y="4976.7344">OpenSSL::Cipher</text><polygon fill="#4362B1" points="1730,5020.3984,1740,5024.3984,1730,5028.3984,1734,5024.3984" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="5024.3984" y2="5024.3984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="622" y="5014.8672">key=</text><polygon fill="#4362B1" points="621,5058.5313,611,5062.5313,621,5066.5313,617,5062.5313" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="5062.5313" y2="5062.5313"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="5053">string</text><polygon fill="#4362B1" points="1730,5096.6641,1740,5100.6641,1730,5104.6641,1734,5100.6641" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="5100.6641" y2="5100.6641"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="622" y="5091.1328">random_iv</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1752" x2="1799" y1="5133.7969" y2="5133.7969"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1799" x2="1799" y1="5133.7969" y2="5146.7969"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1758" x2="1799" y1="5146.7969" y2="5146.7969"/><polygon fill="#4362B1" points="1768,5142.7969,1758,5146.7969,1768,5150.7969,1764,5146.7969" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="82" x="1769" y="5124.2656">random_bytes</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1757" y1="5194.9297" y2="5194.9297"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1715" y1="5194.9297" y2="5207.9297"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1762" y1="5207.9297" y2="5207.9297"/><polygon fill="#4362B1" points="1742,5203.9297,1752,5207.9297,1742,5211.9297,1746,5207.9297" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1720" y="5185.3984">string</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1752" x2="1799" y1="5236.0625" y2="5236.0625"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1799" x2="1799" y1="5236.0625" y2="5249.0625"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1758" x2="1799" y1="5249.0625" y2="5249.0625"/><polygon fill="#4362B1" points="1768,5245.0625,1758,5249.0625,1768,5253.0625,1764,5249.0625" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="19" x="1769" y="5226.5313">iv=</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1757" y1="5297.1953" y2="5297.1953"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1715" y1="5297.1953" y2="5310.1953"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1762" y1="5310.1953" y2="5310.1953"/><polygon fill="#4362B1" points="1742,5306.1953,1752,5310.1953,1742,5314.1953,1746,5310.1953" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1720" y="5287.6641">string</text><polygon fill="#4362B1" points="621,5339.3281,611,5343.3281,621,5347.3281,617,5343.3281" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="5343.3281" y2="5343.3281"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="5333.7969">string</text><polygon fill="#4362B1" points="1730,5377.4609,1740,5381.4609,1730,5385.4609,1734,5381.4609" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="5381.4609" y2="5381.4609"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="67" x="622" y="5371.9297">auth_data=</text><polygon fill="#4362B1" points="621,5415.5938,611,5419.5938,621,5423.5938,617,5419.5938" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="5419.5938" y2="5419.5938"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="5410.0625">string</text><polygon fill="#4362B1" points="1878,5453.7266,1888,5457.7266,1878,5461.7266,1882,5457.7266" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1884" y1="5457.7266" y2="5457.7266"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="622" y="5448.1953">generate</text><polygon fill="#4362B1" points="621,5491.8594,611,5495.8594,621,5499.8594,617,5495.8594" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1894" y1="5495.8594" y2="5495.8594"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="5486.3281">string</text><polygon fill="#4362B1" points="1730,5529.9922,1740,5533.9922,1730,5537.9922,1734,5533.9922" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="5533.9922" y2="5533.9922"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="622" y="5524.4609">update</text><polygon fill="#4362B1" points="621,5568.125,611,5572.125,621,5576.125,617,5572.125" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="5572.125" y2="5572.125"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="5562.5938">string</text><polygon fill="#4362B1" points="1730,5606.2578,1740,5610.2578,1730,5614.2578,1734,5610.2578" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="5610.2578" y2="5610.2578"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="622" y="5600.7266">final</text><polygon fill="#4362B1" points="621,5644.3906,611,5648.3906,621,5652.3906,617,5648.3906" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="5648.3906" y2="5648.3906"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="5638.8594">string</text><polygon fill="#4362B1" points="11,5682.5234,1,5686.5234,11,5690.5234,7,5686.5234" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="5686.5234" y2="5686.5234"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="22" y="5676.9922">string</text><polygon fill="#4362B1" points="404,5720.6563,414,5724.6563,404,5728.6563,408,5724.6563" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="410" y1="5724.6563" y2="5724.6563"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="18" x="12" y="5715.125">[]=</text><polygon fill="#4362B1" points="11,5758.7891,1,5762.7891,11,5766.7891,7,5762.7891" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="420" y1="5762.7891" y2="5762.7891"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="22" y="5753.2578">string</text><polygon fill="#4362B1" points="588,5796.9219,598,5800.9219,588,5804.9219,592,5800.9219" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="5800.9219" y2="5800.9219"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="12" y="5791.3906">invoke_before</text><polygon fill="#4362B1" points="11,5835.0547,1,5839.0547,11,5843.0547,7,5839.0547" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="5839.0547" y2="5839.0547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="5829.5234">array</text><polygon fill="#4362B1" points="588,5873.1875,598,5877.1875,588,5881.1875,592,5877.1875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="5877.1875" y2="5877.1875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="12" y="5867.6563">invoke_after</text><polygon fill="#4362B1" points="11,5911.3203,1,5915.3203,11,5919.3203,7,5915.3203" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="5915.3203" y2="5915.3203"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="5905.7891">array</text><polygon fill="#4362B1" points="588,5949.4531,598,5953.4531,588,5957.4531,592,5953.4531" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="5953.4531" y2="5953.4531"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="12" y="5943.9219">invoke_before</text><polygon fill="#4362B1" points="11,5987.5859,1,5991.5859,11,5995.5859,7,5991.5859" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="5991.5859" y2="5991.5859"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="5982.0547">array</text><polygon fill="#4362B1" points="593,6025.7188,603,6029.7188,593,6033.7188,597,6029.7188" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="599" y1="6029.7188" y2="6029.7188"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="12" y="6020.1875">invoke_after</text><polygon fill="#4362B1" points="1089,6063.8516,1099,6067.8516,1089,6071.8516,1093,6067.8516" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="1095" y1="6067.8516" y2="6067.8516"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="42" x="12" y="6058.3203">unpack</text><polygon fill="#4362B1" points="11,6101.9844,1,6105.9844,11,6109.9844,7,6105.9844" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="1105" y1="6105.9844" y2="6105.9844"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="6096.4531">array</text><polygon fill="#4362B1" points="759,6140.1172,769,6144.1172,759,6148.1172,763,6144.1172" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="765" y1="6144.1172" y2="6144.1172"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="12" y="6134.5859">write</text><polygon fill="#4362B1" points="11,6178.25,1,6182.25,11,6186.25,7,6182.25" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="775" y1="6182.25" y2="6182.25"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="22" y="6172.7188">integer</text><polygon fill="#4362B1" points="164,6216.3828,174,6220.3828,164,6224.3828,168,6220.3828" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="170" y1="6220.3828" y2="6220.3828"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="147" x="12" y="6210.8516">GET /users/{id}/followers</text><polygon fill="#4362B1" points="404,6254.5156,414,6258.5156,404,6262.5156,408,6258.5156" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="186" x2="410" y1="6258.5156" y2="6258.5156"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="85" x="198" y="6248.9844">process_action</text><path d="M332,6273.5156 L411,6273.5156 L411,6289.6484 L401,6299.6484 L328,6299.6484 L328,6277.5156 A4,4 0 0 1 332,6273.5156 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="528" x="328" y="6273.5156"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="6291.1172">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="6292.1172">[2 times]</text><polygon fill="#4362B1" points="759,6334.9141,769,6338.9141,759,6342.9141,763,6338.9141" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="765" y1="6338.9141" y2="6338.9141"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="438" y="6329.3828">write</text><polygon fill="#4362B1" points="437,6373.0469,427,6377.0469,437,6381.0469,433,6377.0469" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="775" y1="6377.0469" y2="6377.0469"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="448" y="6367.5156">integer</text><polygon fill="#4362B1" points="588,6418.1797,598,6422.1797,588,6426.1797,592,6422.1797" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="594" y1="6422.1797" y2="6422.1797"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="438" y="6412.6484">invoke_before</text><polygon fill="#4362B1" points="437,6456.3125,427,6460.3125,437,6464.3125,433,6460.3125" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="599" y1="6460.3125" y2="6460.3125"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="448" y="6450.7813">[]</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="473" y1="6493.4453" y2="6493.4453"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="473" x2="473" y1="6493.4453" y2="6506.4453"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="432" x2="473" y1="6506.4453" y2="6506.4453"/><polygon fill="#4362B1" points="442,6502.4453,432,6506.4453,442,6510.4453,438,6506.4453" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="443" y="6483.9141">update</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="431" y1="6554.5781" y2="6554.5781"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="389" y1="6554.5781" y2="6567.5781"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="436" y1="6567.5781" y2="6567.5781"/><polygon fill="#4362B1" points="416,6563.5781,426,6567.5781,416,6571.5781,420,6567.5781" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="201" x="225" y="6545.0469">ActionDispatch::Cookies::CookieJar</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="473" y1="6595.7109" y2="6595.7109"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="473" x2="473" y1="6595.7109" y2="6608.7109"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="432" x2="473" y1="6608.7109" y2="6608.7109"/><polygon fill="#4362B1" points="442,6604.7109,432,6608.7109,442,6612.7109,438,6608.7109" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="443" y="6586.1797">[]</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="431" y1="6656.8438" y2="6656.8438"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="389" y1="6656.8438" y2="6669.8438"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="389" x2="436" y1="6669.8438" y2="6669.8438"/><polygon fill="#4362B1" points="416,6665.8438,426,6669.8438,416,6673.8438,420,6669.8438" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="394" y="6647.3125">string</text><path d="M332,6679.8438 L411,6679.8438 L411,6695.9766 L401,6705.9766 L328,6705.9766 L328,6683.8438 A4,4 0 0 1 332,6679.8438 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="853" x="328" y="6679.8438"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="6697.4453">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="6698.4453">[3 times]</text><polygon fill="#4362B1" points="1089,6741.2422,1099,6745.2422,1089,6749.2422,1093,6745.2422" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1095" y1="6745.2422" y2="6745.2422"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="50" x="438" y="6735.7109">unpack1</text><polygon fill="#4362B1" points="437,6779.375,427,6783.375,437,6787.375,433,6783.375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1105" y1="6783.375" y2="6783.375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="6773.8438">string</text><polygon fill="#4362B1" points="1730,6824.5078,1740,6828.5078,1730,6832.5078,1734,6828.5078" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="6828.5078" y2="6828.5078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="438" y="6818.9766">decrypt</text><polygon fill="#4362B1" points="437,6862.6406,427,6866.6406,437,6870.6406,433,6866.6406" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="6866.6406" y2="6866.6406"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="95" x="448" y="6857.1094">OpenSSL::Cipher</text><polygon fill="#4362B1" points="1730,6900.7734,1740,6904.7734,1730,6908.7734,1734,6904.7734" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="6904.7734" y2="6904.7734"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="438" y="6895.2422">key=</text><polygon fill="#4362B1" points="437,6938.9063,427,6942.9063,437,6946.9063,433,6942.9063" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="6942.9063" y2="6942.9063"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="6933.375">string</text><polygon fill="#4362B1" points="1730,6977.0391,1740,6981.0391,1730,6985.0391,1734,6981.0391" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="6981.0391" y2="6981.0391"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="19" x="438" y="6971.5078">iv=</text><polygon fill="#4362B1" points="437,7015.1719,427,7019.1719,437,7023.1719,433,7019.1719" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="7019.1719" y2="7019.1719"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="7009.6406">string</text><polygon fill="#4362B1" points="1730,7053.3047,1740,7057.3047,1730,7061.3047,1734,7057.3047" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="7057.3047" y2="7057.3047"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="59" x="438" y="7047.7734">auth_tag=</text><polygon fill="#4362B1" points="437,7091.4375,427,7095.4375,437,7099.4375,433,7095.4375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="7095.4375" y2="7095.4375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="7085.9063">string</text><polygon fill="#4362B1" points="1730,7129.5703,1740,7133.5703,1730,7137.5703,1734,7133.5703" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="7133.5703" y2="7133.5703"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="67" x="438" y="7124.0391">auth_data=</text><polygon fill="#4362B1" points="437,7167.7031,427,7171.7031,437,7175.7031,433,7171.7031" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="7171.7031" y2="7171.7031"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="7162.1719">string</text><polygon fill="#4362B1" points="1730,7205.8359,1740,7209.8359,1730,7213.8359,1734,7209.8359" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="7209.8359" y2="7209.8359"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="438" y="7200.3047">update</text><polygon fill="#4362B1" points="437,7243.9688,427,7247.9688,437,7251.9688,433,7247.9688" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="7247.9688" y2="7247.9688"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="7238.4375">string</text><polygon fill="#4362B1" points="1730,7282.1016,1740,7286.1016,1730,7290.1016,1734,7286.1016" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1736" y1="7286.1016" y2="7286.1016"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="438" y="7276.5703">final</text><polygon fill="#4362B1" points="437,7320.2344,427,7324.2344,437,7328.2344,433,7324.2344" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1746" y1="7324.2344" y2="7324.2344"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="7314.7031">string</text><polygon fill="#4362B1" points="1878,7358.3672,1888,7362.3672,1878,7366.3672,1882,7362.3672" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1884" y1="7362.3672" y2="7362.3672"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="33" x="438" y="7352.8359">parse</text><polygon fill="#4362B1" points="437,7396.5,427,7400.5,437,7404.5,433,7400.5" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1894" y1="7400.5" y2="7400.5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="448" y="7390.9688">object</text><polygon fill="#4362B1" points="1089,7434.6328,1099,7438.6328,1089,7442.6328,1093,7438.6328" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1095" y1="7438.6328" y2="7438.6328"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="50" x="438" y="7429.1016">unpack1</text><polygon fill="#4362B1" points="437,7472.7656,427,7476.7656,437,7480.7656,433,7476.7656" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1105" y1="7476.7656" y2="7476.7656"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="448" y="7467.2344">string</text><polygon fill="#4362B1" points="1878,7510.8984,1888,7514.8984,1878,7518.8984,1882,7514.8984" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1884" y1="7514.8984" y2="7514.8984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="33" x="438" y="7505.3672">parse</text><polygon fill="#4362B1" points="437,7549.0313,427,7553.0313,437,7557.0313,433,7553.0313" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1894" y1="7553.0313" y2="7553.0313"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="448" y="7543.5">object</text><polygon fill="#4362B1" points="1416.5,7587.1641,1426.5,7591.1641,1416.5,7595.1641,1420.5,7591.1641" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1422.5" y1="7591.1641" y2="7591.1641"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="86" x="622" y="7581.6328">logged_in_user</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1428.5" x2="1475.5" y1="7624.2969" y2="7624.2969"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1475.5" x2="1475.5" y1="7624.2969" y2="7637.2969"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1434.5" x2="1475.5" y1="7637.2969" y2="7637.2969"/><polygon fill="#4362B1" points="1444.5,7633.2969,1434.5,7637.2969,1444.5,7641.2969,1440.5,7637.2969" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="1445.5" y="7614.7656">logged_in?</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1433.5" x2="1480.5" y1="7675.4297" y2="7675.4297"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1480.5" x2="1480.5" y1="7675.4297" y2="7688.4297"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1439.5" x2="1480.5" y1="7688.4297" y2="7688.4297"/><polygon fill="#4362B1" points="1449.5,7684.4297,1439.5,7688.4297,1449.5,7692.4297,1445.5,7688.4297" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="72" x="1450.5" y="7665.8984">current_user</text><polygon fill="#4362B1" points="442,7727.5625,432,7731.5625,442,7735.5625,438,7731.5625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="1427.5" y1="7731.5625" y2="7731.5625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="453" y="7722.0313">[]</text><polygon fill="#4362B1" points="1416.5,7765.6953,1426.5,7769.6953,1416.5,7773.6953,1420.5,7769.6953" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="426" x2="1422.5" y1="7769.6953" y2="7769.6953"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="438" y="7760.1641">integer</text><polygon fill="#4362B1" points="792,7803.8281,782,7807.8281,792,7811.8281,788,7807.8281" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="1427.5" y1="7807.8281" y2="7807.8281"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="7798.2969">write</text><polygon fill="#4362B1" points="1416.5,7841.9609,1426.5,7845.9609,1416.5,7849.9609,1420.5,7845.9609" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="1422.5" y1="7845.9609" y2="7845.9609"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="7836.4297">integer</text><polygon fill="#4362B1" points="2524.5,7883.0938,2534.5,7887.0938,2524.5,7891.0938,2528.5,7887.0938" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2530.5" y1="7887.0938" y2="7887.0938"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="300" x="1450.5" y="7877.5625">SELECT "users".* FROM "users" WHERE "users"."id" =</text><path d="M2541,7862.9609 L2541,7888.9609 A4,4 0 0 0 2545,7892.9609 L2920,7892.9609 A4,4 0 0 0 2924,7888.9609 L2924,7868.9609 L2914,7858.9609 L2545,7858.9609 A4,4 0 0 0 2541,7862.9609 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2914,7858.9609 L2914,7866.9609 A2,2 0 0 0 2916,7868.9609 L2924,7868.9609 L2914,7858.9609 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="352" x="2552" y="7880.5625">SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1396.5" x2="1438.5" y1="7933.2266" y2="7933.2266"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1396.5" x2="1396.5" y1="7933.2266" y2="7946.2266"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1396.5" x2="1443.5" y1="7946.2266" y2="7946.2266"/><polygon fill="#4362B1" points="1423.5,7942.2266,1433.5,7946.2266,1423.5,7950.2266,1427.5,7946.2266" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="1397.5" y="7923.6953">object</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1391.5" x2="1433.5" y1="7984.3594" y2="7984.3594"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1391.5" x2="1391.5" y1="7984.3594" y2="7997.3594"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1391.5" x2="1438.5" y1="7997.3594" y2="7997.3594"/><polygon fill="#4362B1" points="1418.5,7993.3594,1428.5,7997.3594,1418.5,8001.3594,1422.5,7997.3594" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="46" x="1382.5" y="7974.8281">boolean</text><polygon fill="#4362B1" points="437,8026.4922,427,8030.4922,437,8034.4922,433,8030.4922" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="604" y1="8030.4922" y2="8030.4922"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="448" y="8020.9609">array</text><polygon fill="#4362B1" points="1246,8064.625,1256,8068.625,1246,8072.625,1250,8068.625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="1252" y1="8068.625" y2="8068.625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="438" y="8059.0938">followers</text><polygon fill="#4362B1" points="792,8102.7578,782,8106.7578,792,8110.7578,788,8106.7578" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="1257" y1="8106.7578" y2="8106.7578"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="8097.2266">write</text><polygon fill="#4362B1" points="1246,8140.8906,1256,8144.8906,1246,8148.8906,1250,8144.8906" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="1252" y1="8144.8906" y2="8144.8906"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="8135.3594">integer</text><polygon fill="#4362B1" points="2524.5,8182.0234,2534.5,8186.0234,2524.5,8190.0234,2528.5,8186.0234" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1268" x2="2530.5" y1="8186.0234" y2="8186.0234"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="300" x="1280" y="8176.4922">SELECT "users".* FROM "users" WHERE "users"."id" =</text><path d="M2541,8161.8906 L2541,8187.8906 A4,4 0 0 0 2545,8191.8906 L2920,8191.8906 A4,4 0 0 0 2924,8187.8906 L2924,8167.8906 L2914,8157.8906 L2545,8157.8906 A4,4 0 0 0 2541,8161.8906 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2914,8157.8906 L2914,8165.8906 A2,2 0 0 0 2916,8167.8906 L2924,8167.8906 L2914,8157.8906 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="352" x="2552" y="8179.4922">SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1268" x2="1315" y1="8222.1563" y2="8222.1563"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1315" x2="1315" y1="8222.1563" y2="8235.1563"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1274" x2="1315" y1="8235.1563" y2="8235.1563"/><polygon fill="#4362B1" points="1284,8231.1563,1274,8235.1563,1284,8239.1563,1280,8235.1563" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="80" x="1285" y="8212.625">page_number</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1231" x2="1273" y1="8283.2891" y2="8283.2891"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1231" x2="1231" y1="8283.2891" y2="8296.2891"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1231" x2="1278" y1="8296.2891" y2="8296.2891"/><polygon fill="#4362B1" points="1258,8292.2891,1268,8296.2891,1258,8300.2891,1262,8296.2891" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="1228" y="8273.7578">integer</text><polygon fill="#4362B1" points="442,8325.4219,432,8329.4219,442,8333.4219,438,8329.4219" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="1257" y1="8329.4219" y2="8329.4219"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="91" x="453" y="8319.8906">render_to_body</text><polygon fill="#4362B1" points="2024.5,8363.5547,2034.5,8367.5547,2024.5,8371.5547,2028.5,8367.5547" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="431" x2="2030.5" y1="8367.5547" y2="8367.5547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="39" x="443" y="8358.0234">render</text><path d="M1963,8382.5547 L2042,8382.5547 L2042,8398.6875 L2032,8408.6875 L1959,8408.6875 L1959,8386.5547 A4,4 0 0 1 1963,8382.5547 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="328" x="1959" y="8382.5547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="1979" y="8400.1563">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="2062" y="8401.1563">[5 times]</text><polygon fill="#4362B1" points="2178.5,8443.9531,2188.5,8447.9531,2178.5,8451.9531,2182.5,8447.9531" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2184.5" y1="8447.9531" y2="8447.9531"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="2048.5" y="8438.4219">find_all</text><polygon fill="#4362B1" points="2047.5,8482.0859,2037.5,8486.0859,2047.5,8490.0859,2043.5,8486.0859" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2194.5" y1="8486.0859" y2="8486.0859"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="8476.5547">array</text><polygon fill="#4362B1" points="792,8527.2188,782,8531.2188,792,8535.2188,788,8531.2188" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="8531.2188" y2="8531.2188"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="8521.6875">write</text><polygon fill="#4362B1" points="2024.5,8565.3516,2034.5,8569.3516,2024.5,8573.3516,2028.5,8569.3516" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="8569.3516" y2="8569.3516"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="8559.8203">integer</text><polygon fill="#4362B1" points="1444.5,8603.4844,1434.5,8607.4844,1444.5,8611.4844,1440.5,8607.4844" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="8607.4844" y2="8607.4844"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="1455.5" y="8597.9531">gravatar_for</text><polygon fill="#4362B1" points="2024.5,8641.6172,2034.5,8645.6172,2024.5,8649.6172,2028.5,8645.6172" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="8645.6172" y2="8645.6172"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="1440.5" y="8636.0859">object</text><polygon fill="#4362B1" points="792,8679.75,782,8683.75,792,8687.75,788,8683.75" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="8683.75" y2="8683.75"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="8674.2188">write</text><polygon fill="#4362B1" points="2024.5,8717.8828,2034.5,8721.8828,2024.5,8725.8828,2028.5,8721.8828" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="8721.8828" y2="8721.8828"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="8712.3516">integer</text><polygon fill="#4362B1" points="2524.5,8759.0156,2534.5,8763.0156,2524.5,8767.0156,2528.5,8763.0156" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2530.5" y1="8763.0156" y2="8763.0156"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="324" x="2048.5" y="8753.4844">SELECT COUNT(*) FROM "microposts" WHERE "micropost</text><path d="M2541,8738.8828 L2541,8764.8828 A4,4 0 0 0 2545,8768.8828 L2979,8768.8828 A4,4 0 0 0 2983,8764.8828 L2983,8744.8828 L2973,8734.8828 L2545,8734.8828 A4,4 0 0 0 2541,8738.8828 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2973,8734.8828 L2973,8742.8828 A2,2 0 0 0 2975,8744.8828 L2983,8744.8828 L2973,8734.8828 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="411" x="2552" y="8756.4844">SELECT COUNT(*) FROM "microposts" WHERE "microposts"."user_id" = ?</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2078.5" y1="8804.1484" y2="8804.1484"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2078.5" x2="2078.5" y1="8804.1484" y2="8817.1484"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2037.5" x2="2078.5" y1="8817.1484" y2="8817.1484"/><polygon fill="#4362B1" points="2047.5,8813.1484,2037.5,8817.1484,2047.5,8821.1484,2043.5,8817.1484" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="39" x="2048.5" y="8794.6172">render</text><polygon fill="#4362B1" points="2178.5,8851.2813,2188.5,8855.2813,2178.5,8859.2813,2182.5,8855.2813" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2184.5" y1="8855.2813" y2="8855.2813"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="2048.5" y="8845.75">find_all</text><polygon fill="#4362B1" points="2047.5,8889.4141,2037.5,8893.4141,2047.5,8897.4141,2043.5,8893.4141" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2194.5" y1="8893.4141" y2="8893.4141"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="8883.8828">array</text><polygon fill="#4362B1" points="792,8927.5469,782,8931.5469,792,8935.5469,788,8931.5469" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="8931.5469" y2="8931.5469"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="8922.0156">write</text><polygon fill="#4362B1" points="2024.5,8965.6797,2034.5,8969.6797,2024.5,8973.6797,2028.5,8969.6797" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="8969.6797" y2="8969.6797"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="8960.1484">integer</text><polygon fill="#4362B1" points="2524.5,9013.8789,2534.5,9017.8789,2524.5,9021.8789,2528.5,9017.8789" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2530.5" y1="9017.8789" y2="9017.8789"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="308" x="2048.5" y="9008.3477">SELECT COUNT(*) FROM "users" INNER JOIN "relations</text><path d="M2541,8986.6797 L2541,9026.6797 A4,4 0 0 0 2545,9030.6797 L3006,9030.6797 A4,4 0 0 0 3010,9026.6797 L3010,8992.6797 L3000,8982.6797 L2545,8982.6797 A4,4 0 0 0 2541,8986.6797 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M3000,8982.6797 L3000,8990.6797 A2,2 0 0 0 3002,8992.6797 L3010,8992.6797 L3000,8982.6797 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="438" x="2552" y="9004.2813">SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="385" x="2552" y="9018.4141">"relationships"."followed_id" WHERE "relationships"."follower_id" = ?</text><polygon fill="#4362B1" points="792,9062.0781,782,9066.0781,792,9070.0781,788,9066.0781" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="9066.0781" y2="9066.0781"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="9056.5469">write</text><polygon fill="#4362B1" points="2024.5,9100.2109,2034.5,9104.2109,2024.5,9108.2109,2028.5,9104.2109" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="9104.2109" y2="9104.2109"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="9094.6797">integer</text><polygon fill="#4362B1" points="2524.5,9148.4102,2534.5,9152.4102,2524.5,9156.4102,2528.5,9152.4102" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2530.5" y1="9152.4102" y2="9152.4102"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="308" x="2048.5" y="9142.8789">SELECT COUNT(*) FROM "users" INNER JOIN "relations</text><path d="M2541,9121.2109 L2541,9161.2109 A4,4 0 0 0 2545,9165.2109 L3006,9165.2109 A4,4 0 0 0 3010,9161.2109 L3010,9127.2109 L3000,9117.2109 L2545,9117.2109 A4,4 0 0 0 2541,9121.2109 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M3000,9117.2109 L3000,9125.2109 A2,2 0 0 0 3002,9127.2109 L3010,9127.2109 L3000,9117.2109 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="438" x="2552" y="9138.8125">SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="385" x="2552" y="9152.9453">"relationships"."follower_id" WHERE "relationships"."followed_id" = ?</text><polygon fill="#4362B1" points="792,9196.6094,782,9200.6094,792,9204.6094,788,9200.6094" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="9200.6094" y2="9200.6094"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="9191.0781">write</text><polygon fill="#4362B1" points="2024.5,9234.7422,2034.5,9238.7422,2024.5,9242.7422,2028.5,9238.7422" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="9238.7422" y2="9238.7422"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="9229.2109">integer</text><polygon fill="#4362B1" points="792,9272.875,782,9276.875,792,9280.875,788,9276.875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="9276.875" y2="9276.875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="9267.3438">write</text><polygon fill="#4362B1" points="2024.5,9311.0078,2034.5,9315.0078,2024.5,9319.0078,2028.5,9315.0078" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="9315.0078" y2="9315.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="9305.4766">integer</text><polygon fill="#4362B1" points="2524.5,9359.207,2534.5,9363.207,2524.5,9367.207,2528.5,9363.207" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2530.5" y1="9363.207" y2="9363.207"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="308" x="2048.5" y="9353.6758">SELECT COUNT(*) FROM "users" INNER JOIN "relations</text><path d="M2541,9332.0078 L2541,9372.0078 A4,4 0 0 0 2545,9376.0078 L3006,9376.0078 A4,4 0 0 0 3010,9372.0078 L3010,9338.0078 L3000,9328.0078 L2545,9328.0078 A4,4 0 0 0 2541,9332.0078 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M3000,9328.0078 L3000,9336.0078 A2,2 0 0 0 3002,9338.0078 L3010,9338.0078 L3000,9328.0078 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="438" x="2552" y="9349.6094">SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="385" x="2552" y="9363.7422">"relationships"."follower_id" WHERE "relationships"."followed_id" = ?</text><polygon fill="#4362B1" points="959.5,9407.4063,949.5,9411.4063,959.5,9415.4063,955.5,9411.4063" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="953.5" x2="2035.5" y1="9411.4063" y2="9411.4063"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="970.5" y="9401.875">records</text><polygon fill="#4362B1" points="792,9445.5391,782,9449.5391,792,9453.5391,788,9449.5391" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="937.5" y1="9449.5391" y2="9449.5391"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="9440.0078">write</text><polygon fill="#4362B1" points="926.5,9483.6719,936.5,9487.6719,926.5,9491.6719,930.5,9487.6719" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="932.5" y1="9487.6719" y2="9487.6719"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="9478.1406">integer</text><polygon fill="#4362B1" points="2524.5,9538.9375,2534.5,9542.9375,2524.5,9546.9375,2528.5,9542.9375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="948.5" x2="2530.5" y1="9542.9375" y2="9542.9375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="295" x="960.5" y="9533.4063">SELECT "users".* FROM "users" INNER JOIN "relation</text><path d="M2541,9504.6719 L2541,9558.6719 A4,4 0 0 0 2545,9562.6719 L2999,9562.6719 A4,4 0 0 0 3003,9558.6719 L3003,9510.6719 L2993,9500.6719 L2545,9500.6719 A4,4 0 0 0 2541,9504.6719 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2993,9500.6719 L2993,9508.6719 A2,2 0 0 0 2995,9510.6719 L3003,9510.6719 L2993,9500.6719 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="431" x="2552" y="9522.2734">SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="428" x="2552" y="9536.4063">"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="2552" y="9550.5391">OFFSET ?</text><polygon fill="#4362B1" points="2024.5,9594.2031,2034.5,9598.2031,2024.5,9602.2031,2028.5,9598.2031" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="943.5" x2="2030.5" y1="9598.2031" y2="9598.2031"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="955.5" y="9588.6719">array</text><path d="M1349,9613.2031 L1428,9613.2031 L1428,9629.3359 L1418,9639.3359 L1345,9639.3359 L1345,9617.2031 A4,4 0 0 1 1349,9613.2031 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="111.5313" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="769" x="1345" y="9613.2031"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="1365" y="9630.8047">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="1448" y="9631.8047">[2 times]</text><polygon fill="#4362B1" points="1444.5,9674.6016,1434.5,9678.6016,1444.5,9682.6016,1440.5,9678.6016" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="9678.6016" y2="9678.6016"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="1455.5" y="9669.0703">gravatar_for</text><polygon fill="#4362B1" points="2024.5,9712.7344,2034.5,9716.7344,2024.5,9720.7344,2028.5,9716.7344" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="9716.7344" y2="9716.7344"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="145" x="1440.5" y="9707.2031">ActiveSupport::SafeBuffer</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2078.5" y1="9761.8672" y2="9761.8672"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2078.5" x2="2078.5" y1="9761.8672" y2="9774.8672"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2037.5" x2="2078.5" y1="9774.8672" y2="9774.8672"/><polygon fill="#4362B1" points="2047.5,9770.8672,2037.5,9774.8672,2047.5,9778.8672,2043.5,9774.8672" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="39" x="2048.5" y="9752.3359">render</text><polygon fill="#4362B1" points="959.5,9809,949.5,9813,959.5,9817,955.5,9813" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="953.5" x2="2035.5" y1="9813" y2="9813"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="970.5" y="9803.4688">records</text><polygon fill="#4362B1" points="2024.5,9847.1328,2034.5,9851.1328,2024.5,9855.1328,2028.5,9851.1328" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="943.5" x2="2030.5" y1="9851.1328" y2="9851.1328"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="955.5" y="9841.6016">array</text><polygon fill="#4362B1" points="2178.5,9885.2656,2188.5,9889.2656,2178.5,9893.2656,2182.5,9889.2656" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2184.5" y1="9889.2656" y2="9889.2656"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="2048.5" y="9879.7344">find_all</text><polygon fill="#4362B1" points="2047.5,9923.3984,2037.5,9927.3984,2047.5,9931.3984,2043.5,9927.3984" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2194.5" y1="9927.3984" y2="9927.3984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="9917.8672">array</text><path d="M332,9942.3984 L411,9942.3984 L411,9958.5313 L401,9968.5313 L328,9968.5313 L328,9946.3984 A4,4 0 0 1 332,9942.3984 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="480.7266" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1786" x="328" y="9942.3984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="9960">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="9961">[2 times]</text><polygon fill="#4362B1" points="1444.5,10003.7969,1434.5,10007.7969,1444.5,10011.7969,1440.5,10007.7969" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="10007.7969" y2="10007.7969"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="1455.5" y="9998.2656">gravatar_for</text><polygon fill="#4362B1" points="2024.5,10041.9297,2034.5,10045.9297,2024.5,10049.9297,2028.5,10045.9297" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="10045.9297" y2="10045.9297"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="145" x="1440.5" y="10036.3984">ActiveSupport::SafeBuffer</text><polygon fill="#4362B1" points="1444.5,10080.0625,1434.5,10084.0625,1444.5,10088.0625,1440.5,10084.0625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="10084.0625" y2="10084.0625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="72" x="1455.5" y="10074.5313">current_user</text><polygon fill="#4362B1" points="447,10118.1953,437,10122.1953,447,10126.1953,443,10122.1953" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="441" x2="1422.5" y1="10122.1953" y2="10122.1953"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="458" y="10112.6641">[]</text><polygon fill="#4362B1" points="1411.5,10156.3281,1421.5,10160.3281,1411.5,10164.3281,1415.5,10160.3281" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1417.5" y1="10160.3281" y2="10160.3281"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="443" y="10150.7969">integer</text><polygon fill="#4362B1" points="2024.5,10194.4609,2034.5,10198.4609,2024.5,10202.4609,2028.5,10198.4609" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="10198.4609" y2="10198.4609"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="26" x="1440.5" y="10188.9297">User</text><polygon fill="#4362B1" points="1439.5,10232.5938,1429.5,10236.5938,1439.5,10240.5938,1435.5,10236.5938" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1433.5" x2="2035.5" y1="10236.5938" y2="10236.5938"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="77" x="1450.5" y="10227.0625">current_user?</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1428.5" x2="1475.5" y1="10269.7266" y2="10269.7266"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1475.5" x2="1475.5" y1="10269.7266" y2="10282.7266"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1434.5" x2="1475.5" y1="10282.7266" y2="10282.7266"/><polygon fill="#4362B1" points="1444.5,10278.7266,1434.5,10282.7266,1444.5,10286.7266,1440.5,10282.7266" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="72" x="1445.5" y="10260.1953">current_user</text><polygon fill="#4362B1" points="447,10321.8594,437,10325.8594,447,10329.8594,443,10325.8594" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="441" x2="1422.5" y1="10325.8594" y2="10325.8594"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="458" y="10316.3281">[]</text><polygon fill="#4362B1" points="1411.5,10359.9922,1421.5,10363.9922,1411.5,10367.9922,1415.5,10363.9922" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1417.5" y1="10363.9922" y2="10363.9922"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="443" y="10354.4609">integer</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1391.5" x2="1433.5" y1="10407.125" y2="10407.125"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1391.5" x2="1391.5" y1="10407.125" y2="10420.125"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1391.5" x2="1438.5" y1="10420.125" y2="10420.125"/><polygon fill="#4362B1" points="1418.5,10416.125,1428.5,10420.125,1418.5,10424.125,1422.5,10420.125" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="26" x="1402.5" y="10397.5938">User</text><polygon fill="#4362B1" points="792,10456.2578,782,10460.2578,792,10464.2578,788,10460.2578" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="10460.2578" y2="10460.2578"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="10450.7266">write</text><polygon fill="#4362B1" points="2024.5,10494.3906,2034.5,10498.3906,2024.5,10502.3906,2028.5,10498.3906" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="10498.3906" y2="10498.3906"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="10488.8594">integer</text><polygon fill="#4362B1" points="1444.5,10532.5234,1434.5,10536.5234,1444.5,10540.5234,1440.5,10536.5234" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="10536.5234" y2="10536.5234"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="44" x="1455.5" y="10526.9922">full_title</text><polygon fill="#4362B1" points="2024.5,10570.6563,2034.5,10574.6563,2024.5,10578.6563,2028.5,10574.6563" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="10574.6563" y2="10574.6563"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="145" x="1440.5" y="10565.125">ActiveSupport::SafeBuffer</text><polygon fill="#4362B1" points="2350,10608.7891,2360,10612.7891,2350,10616.7891,2354,10612.7891" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2356" y1="10612.7891" y2="10612.7891"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="129" x="2048.5" y="10603.2578">unmarshaled_deflated</text><polygon fill="#4362B1" points="1122,10646.9219,1112,10650.9219,1122,10654.9219,1118,10650.9219" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1116" x2="2361" y1="10650.9219" y2="10650.9219"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="25" x="1133" y="10641.3906">load</text><polygon fill="#4362B1" points="2350,10685.0547,2360,10689.0547,2350,10693.0547,2354,10689.0547" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1106" x2="2356" y1="10689.0547" y2="10689.0547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="1118" y="10679.5234">array</text><polygon fill="#4362B1" points="2047.5,10723.1875,2037.5,10727.1875,2047.5,10731.1875,2043.5,10727.1875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2366" y1="10727.1875" y2="10727.1875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="10717.6563">array</text><polygon fill="#4362B1" points="792,10761.3203,782,10765.3203,792,10769.3203,788,10765.3203" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="10765.3203" y2="10765.3203"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="10755.7891">write</text><polygon fill="#4362B1" points="2024.5,10799.4531,2034.5,10803.4531,2024.5,10807.4531,2028.5,10803.4531" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="10803.4531" y2="10803.4531"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="10793.9219">integer</text><polygon fill="#4362B1" points="1911,10837.5859,1901,10841.5859,1911,10845.5859,1907,10841.5859" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1905" x2="2035.5" y1="10841.5859" y2="10841.5859"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="33" x="1922" y="10832.0547">parse</text><polygon fill="#4362B1" points="2024.5,10875.7188,2034.5,10879.7188,2024.5,10883.7188,2028.5,10879.7188" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1895" x2="2030.5" y1="10879.7188" y2="10879.7188"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="1907" y="10870.1875">object</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2078.5" y1="10917.8516" y2="10917.8516"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2078.5" x2="2078.5" y1="10917.8516" y2="10930.8516"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2037.5" x2="2078.5" y1="10930.8516" y2="10930.8516"/><polygon fill="#4362B1" points="2047.5,10926.8516,2037.5,10930.8516,2047.5,10934.8516,2043.5,10930.8516" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="39" x="2048.5" y="10908.3203">render</text><polygon fill="#4362B1" points="2178.5,10964.9844,2188.5,10968.9844,2178.5,10972.9844,2182.5,10968.9844" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2184.5" y1="10968.9844" y2="10968.9844"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="2048.5" y="10959.4531">find_all</text><polygon fill="#4362B1" points="2047.5,11003.1172,2037.5,11007.1172,2047.5,11011.1172,2043.5,11007.1172" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2194.5" y1="11007.1172" y2="11007.1172"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="10997.5859">array</text><polygon fill="#4362B1" points="792,11041.25,782,11045.25,792,11049.25,788,11045.25" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="11045.25" y2="11045.25"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="11035.7188">write</text><polygon fill="#4362B1" points="2024.5,11079.3828,2034.5,11083.3828,2024.5,11087.3828,2028.5,11083.3828" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="11083.3828" y2="11083.3828"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="11073.8516">integer</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2078.5" y1="11121.5156" y2="11121.5156"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2078.5" x2="2078.5" y1="11121.5156" y2="11134.5156"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2037.5" x2="2078.5" y1="11134.5156" y2="11134.5156"/><polygon fill="#4362B1" points="2047.5,11130.5156,2037.5,11134.5156,2047.5,11138.5156,2043.5,11134.5156" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="39" x="2048.5" y="11111.9844">render</text><polygon fill="#4362B1" points="2178.5,11168.6484,2188.5,11172.6484,2178.5,11176.6484,2182.5,11172.6484" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2184.5" y1="11172.6484" y2="11172.6484"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="2048.5" y="11163.1172">find_all</text><polygon fill="#4362B1" points="2047.5,11206.7813,2037.5,11210.7813,2047.5,11214.7813,2043.5,11210.7813" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2194.5" y1="11210.7813" y2="11210.7813"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="11201.25">array</text><polygon fill="#4362B1" points="1444.5,11244.9141,1434.5,11248.9141,1444.5,11252.9141,1440.5,11248.9141" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="11248.9141" y2="11248.9141"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="1455.5" y="11239.3828">logged_in?</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1433.5" x2="1480.5" y1="11282.0469" y2="11282.0469"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1480.5" x2="1480.5" y1="11282.0469" y2="11295.0469"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1439.5" x2="1480.5" y1="11295.0469" y2="11295.0469"/><polygon fill="#4362B1" points="1449.5,11291.0469,1439.5,11295.0469,1449.5,11299.0469,1445.5,11295.0469" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="72" x="1450.5" y="11272.5156">current_user</text><polygon fill="#4362B1" points="447,11334.1797,437,11338.1797,447,11342.1797,443,11338.1797" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="441" x2="1427.5" y1="11338.1797" y2="11338.1797"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="458" y="11328.6484">[]</text><polygon fill="#4362B1" points="1416.5,11372.3125,1426.5,11376.3125,1416.5,11380.3125,1420.5,11376.3125" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1422.5" y1="11376.3125" y2="11376.3125"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="443" y="11366.7813">integer</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1396.5" x2="1438.5" y1="11419.4453" y2="11419.4453"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1396.5" x2="1396.5" y1="11419.4453" y2="11432.4453"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1396.5" x2="1443.5" y1="11432.4453" y2="11432.4453"/><polygon fill="#4362B1" points="1423.5,11428.4453,1433.5,11432.4453,1423.5,11436.4453,1427.5,11432.4453" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="26" x="1407.5" y="11409.9141">User</text><polygon fill="#4362B1" points="2024.5,11461.5781,2034.5,11465.5781,2024.5,11469.5781,2028.5,11465.5781" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="11465.5781" y2="11465.5781"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="46" x="1440.5" y="11456.0469">boolean</text><path d="M332,11480.5781 L411,11480.5781 L411,11496.7109 L401,11506.7109 L328,11506.7109 L328,11484.5781 A4,4 0 0 1 332,11480.5781 " fill="#4362B1" style="stroke:#4362B1;stroke-width:1.5;"/><rect fill="none" height="187.7969" rx="4" ry="4" style="stroke:#4362B1;stroke-width:1.5;" width="1786" x="328" y="11480.5781"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="28" x="348" y="11498.1797">loop</text><text fill="#4362B1" font-family="&quot;Verdana&quot;" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="55" x="431" y="11499.1797">[2 times]</text><polygon fill="#4362B1" points="1444.5,11541.9766,1434.5,11545.9766,1444.5,11549.9766,1440.5,11545.9766" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1438.5" x2="2035.5" y1="11545.9766" y2="11545.9766"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="72" x="1455.5" y="11536.4453">current_user</text><polygon fill="#4362B1" points="447,11580.1094,437,11584.1094,447,11588.1094,443,11584.1094" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="441" x2="1422.5" y1="11584.1094" y2="11584.1094"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="458" y="11574.5781">[]</text><polygon fill="#4362B1" points="1411.5,11618.2422,1421.5,11622.2422,1411.5,11626.2422,1415.5,11622.2422" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1417.5" y1="11622.2422" y2="11622.2422"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="443" y="11612.7109">integer</text><polygon fill="#4362B1" points="2024.5,11656.375,2034.5,11660.375,2024.5,11664.375,2028.5,11660.375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1428.5" x2="2030.5" y1="11660.375" y2="11660.375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="26" x="1440.5" y="11650.8438">User</text><polygon fill="#4362B1" points="792,11701.5078,782,11705.5078,792,11709.5078,788,11705.5078" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="11705.5078" y2="11705.5078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="11695.9766">write</text><polygon fill="#4362B1" points="2024.5,11739.6406,2034.5,11743.6406,2024.5,11747.6406,2028.5,11743.6406" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="11743.6406" y2="11743.6406"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="11734.1094">integer</text><polygon fill="#4362B1" points="442,11777.7734,432,11781.7734,442,11785.7734,438,11781.7734" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="436" x2="2035.5" y1="11781.7734" y2="11781.7734"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="8" x="453" y="11772.2422">[]</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2078.5" y1="11819.9063" y2="11819.9063"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2078.5" x2="2078.5" y1="11819.9063" y2="11832.9063"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2037.5" x2="2078.5" y1="11832.9063" y2="11832.9063"/><polygon fill="#4362B1" points="2047.5,11828.9063,2037.5,11832.9063,2047.5,11836.9063,2043.5,11832.9063" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="39" x="2048.5" y="11810.375">render</text><polygon fill="#4362B1" points="2178.5,11867.0391,2188.5,11871.0391,2178.5,11875.0391,2182.5,11871.0391" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="2036.5" x2="2184.5" y1="11871.0391" y2="11871.0391"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="2048.5" y="11861.5078">find_all</text><polygon fill="#4362B1" points="2047.5,11905.1719,2037.5,11909.1719,2047.5,11913.1719,2043.5,11909.1719" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="2041.5" x2="2194.5" y1="11909.1719" y2="11909.1719"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="2058.5" y="11899.6406">array</text><polygon fill="#4362B1" points="792,11943.3047,782,11947.3047,792,11951.3047,788,11947.3047" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="786" x2="2035.5" y1="11947.3047" y2="11947.3047"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="803" y="11937.7734">write</text><polygon fill="#4362B1" points="2024.5,11981.4375,2034.5,11985.4375,2024.5,11989.4375,2028.5,11985.4375" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="776" x2="2030.5" y1="11985.4375" y2="11985.4375"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="788" y="11975.9063">integer</text><polygon fill="#4362B1" points="1246,12019.5703,1256,12023.5703,1246,12027.5703,1250,12023.5703" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="426" x2="1252" y1="12023.5703" y2="12023.5703"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="143" x="438" y="12014.0391">ActionView::OutputBuffer</text><polygon fill="#4362B1" points="437,12057.7031,427,12061.7031,437,12065.7031,433,12061.7031" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="1262" y1="12061.7031" y2="12061.7031"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="143" x="448" y="12052.1719">ActionView::OutputBuffer</text><polygon fill="#4362B1" points="588,12095.8359,598,12099.8359,588,12103.8359,592,12099.8359" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="594" y1="12099.8359" y2="12099.8359"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="438" y="12090.3047">invoke_after</text><polygon fill="#4362B1" points="437,12133.9688,427,12137.9688,437,12141.9688,433,12137.9688" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="604" y1="12137.9688" y2="12137.9688"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="448" y="12128.4375">array</text><polygon fill="#4362B1" points="759,12172.1016,769,12176.1016,759,12180.1016,763,12176.1016" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="426" x2="765" y1="12176.1016" y2="12176.1016"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="438" y="12166.5703">write</text><polygon fill="#4362B1" points="437,12210.2344,427,12214.2344,437,12218.2344,433,12214.2344" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="431" x2="775" y1="12214.2344" y2="12214.2344"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="448" y="12204.7031">integer</text><polygon fill="#4362B1" points="197,12248.3672,187,12252.3672,197,12256.3672,193,12252.3672" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="191" x2="420" y1="12252.3672" y2="12252.3672"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="36" x="208" y="12242.8359">object</text><polygon fill="#4362B1" points="11,12286.5,1,12290.5,11,12294.5,7,12290.5" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="180" y1="12290.5" y2="12290.5"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="22" y="12280.9688">200</text><polygon fill="#4362B1" points="1878,12324.6328,1888,12328.6328,1878,12332.6328,1882,12328.6328" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="1884" y1="12328.6328" y2="12328.6328"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="12" y="12319.1016">generate</text><polygon fill="#4362B1" points="11,12362.7656,1,12366.7656,11,12370.7656,7,12366.7656" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="1894" y1="12366.7656" y2="12366.7656"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="22" y="12357.2344">string</text><polygon fill="#4362B1" points="588,12400.8984,598,12404.8984,588,12408.8984,592,12404.8984" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="12404.8984" y2="12404.8984"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="100" x="12" y="12395.3672">encrypt_and_sign</text><polygon fill="#4362B1" points="1730,12439.0313,1740,12443.0313,1730,12447.0313,1734,12443.0313" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="12443.0313" y2="12443.0313"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="43" x="622" y="12433.5">encrypt</text><polygon fill="#4362B1" points="621,12477.1641,611,12481.1641,621,12485.1641,617,12481.1641" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="12481.1641" y2="12481.1641"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="95" x="632" y="12471.6328">OpenSSL::Cipher</text><polygon fill="#4362B1" points="1730,12515.2969,1740,12519.2969,1730,12523.2969,1734,12519.2969" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="12519.2969" y2="12519.2969"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="622" y="12509.7656">key=</text><polygon fill="#4362B1" points="621,12553.4297,611,12557.4297,621,12561.4297,617,12557.4297" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="12557.4297" y2="12557.4297"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="12547.8984">string</text><polygon fill="#4362B1" points="1730,12591.5625,1740,12595.5625,1730,12599.5625,1734,12595.5625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="12595.5625" y2="12595.5625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="60" x="622" y="12586.0313">random_iv</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1752" x2="1799" y1="12628.6953" y2="12628.6953"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1799" x2="1799" y1="12628.6953" y2="12641.6953"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1758" x2="1799" y1="12641.6953" y2="12641.6953"/><polygon fill="#4362B1" points="1768,12637.6953,1758,12641.6953,1768,12645.6953,1764,12641.6953" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" text-decoration="underline" textLength="82" x="1769" y="12619.1641">random_bytes</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1757" y1="12689.8281" y2="12689.8281"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1715" y1="12689.8281" y2="12702.8281"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1762" y1="12702.8281" y2="12702.8281"/><polygon fill="#4362B1" points="1742,12698.8281,1752,12702.8281,1742,12706.8281,1746,12702.8281" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1720" y="12680.2969">string</text><line style="stroke:#4362B1;stroke-width:3.0;" x1="1752" x2="1799" y1="12730.9609" y2="12730.9609"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1799" x2="1799" y1="12730.9609" y2="12743.9609"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="1758" x2="1799" y1="12743.9609" y2="12743.9609"/><polygon fill="#4362B1" points="1768,12739.9609,1758,12743.9609,1768,12747.9609,1764,12743.9609" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="19" x="1769" y="12721.4297">iv=</text><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1757" y1="12792.0938" y2="12792.0938"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1715" y1="12792.0938" y2="12805.0938"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="1715" x2="1762" y1="12805.0938" y2="12805.0938"/><polygon fill="#4362B1" points="1742,12801.0938,1752,12805.0938,1742,12809.0938,1746,12805.0938" style="stroke:#4362B1;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="1720" y="12782.5625">string</text><polygon fill="#4362B1" points="621,12834.2266,611,12838.2266,621,12842.2266,617,12838.2266" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="12838.2266" y2="12838.2266"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="12828.6953">string</text><polygon fill="#4362B1" points="1730,12872.3594,1740,12876.3594,1730,12880.3594,1734,12876.3594" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="12876.3594" y2="12876.3594"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="67" x="622" y="12866.8281">auth_data=</text><polygon fill="#4362B1" points="621,12910.4922,611,12914.4922,621,12918.4922,617,12914.4922" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="12914.4922" y2="12914.4922"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="12904.9609">string</text><polygon fill="#4362B1" points="1878,12948.625,1888,12952.625,1878,12956.625,1882,12952.625" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1884" y1="12952.625" y2="12952.625"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="51" x="622" y="12943.0938">generate</text><polygon fill="#4362B1" points="621,12986.7578,611,12990.7578,621,12994.7578,617,12990.7578" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1894" y1="12990.7578" y2="12990.7578"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="12981.2266">string</text><polygon fill="#4362B1" points="1730,13024.8906,1740,13028.8906,1730,13032.8906,1734,13028.8906" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="13028.8906" y2="13028.8906"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="41" x="622" y="13019.3594">update</text><polygon fill="#4362B1" points="621,13063.0234,611,13067.0234,621,13071.0234,617,13067.0234" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="13067.0234" y2="13067.0234"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="13057.4922">string</text><polygon fill="#4362B1" points="1730,13101.1563,1740,13105.1563,1730,13109.1563,1734,13105.1563" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="610" x2="1736" y1="13105.1563" y2="13105.1563"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="24" x="622" y="13095.625">final</text><polygon fill="#4362B1" points="621,13139.2891,611,13143.2891,621,13147.2891,617,13143.2891" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="615" x2="1746" y1="13143.2891" y2="13143.2891"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="632" y="13133.7578">string</text><polygon fill="#4362B1" points="11,13177.4219,1,13181.4219,11,13185.4219,7,13181.4219" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="13181.4219" y2="13181.4219"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="22" y="13171.8906">string</text><polygon fill="#4362B1" points="404,13215.5547,414,13219.5547,404,13223.5547,408,13219.5547" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="410" y1="13219.5547" y2="13219.5547"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="18" x="12" y="13210.0234">[]=</text><polygon fill="#4362B1" points="11,13253.6875,1,13257.6875,11,13261.6875,7,13257.6875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="420" y1="13257.6875" y2="13257.6875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="32" x="22" y="13248.1563">string</text><polygon fill="#4362B1" points="588,13291.8203,598,13295.8203,588,13299.8203,592,13295.8203" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="13295.8203" y2="13295.8203"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="12" y="13286.2891">invoke_before</text><polygon fill="#4362B1" points="11,13329.9531,1,13333.9531,11,13337.9531,7,13333.9531" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="13333.9531" y2="13333.9531"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="13324.4219">array</text><polygon fill="#4362B1" points="588,13368.0859,598,13372.0859,588,13376.0859,592,13372.0859" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="13372.0859" y2="13372.0859"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="12" y="13362.5547">invoke_after</text><polygon fill="#4362B1" points="11,13406.2188,1,13410.2188,11,13414.2188,7,13410.2188" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="13410.2188" y2="13410.2188"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="13400.6875">array</text><polygon fill="#4362B1" points="759,13444.3516,769,13448.3516,759,13452.3516,763,13448.3516" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="765" y1="13448.3516" y2="13448.3516"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="12" y="13438.8203">write</text><polygon fill="#4362B1" points="11,13482.4844,1,13486.4844,11,13490.4844,7,13486.4844" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="775" y1="13486.4844" y2="13486.4844"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="22" y="13476.9531">integer</text><polygon fill="#4362B1" points="2524.5,13530.6836,2534.5,13534.6836,2524.5,13538.6836,2528.5,13534.6836" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="2530.5" y1="13534.6836" y2="13534.6836"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="303" x="12" y="13525.1523">SELECT 1 AS one FROM "users" INNER JOIN "relations</text><path d="M2541,13503.4844 L2541,13543.4844 A4,4 0 0 0 2545,13547.4844 L3001,13547.4844 A4,4 0 0 0 3005,13543.4844 L3005,13509.4844 L2995,13499.4844 L2545,13499.4844 A4,4 0 0 0 2541,13503.4844 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2995,13499.4844 L2995,13507.4844 A2,2 0 0 0 2997,13509.4844 L3005,13509.4844 L2995,13499.4844 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="433" x="2552" y="13521.0859">SELECT 1 AS one FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="428" x="2552" y="13535.2188">"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?</text><polygon fill="#4362B1" points="759,13578.8828,769,13582.8828,759,13586.8828,763,13582.8828" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="765" y1="13582.8828" y2="13582.8828"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="12" y="13573.3516">write</text><polygon fill="#4362B1" points="11,13617.0156,1,13621.0156,11,13625.0156,7,13621.0156" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="775" y1="13621.0156" y2="13621.0156"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="22" y="13611.4844">integer</text><polygon fill="#4362B1" points="2524.5,13665.2148,2534.5,13669.2148,2524.5,13673.2148,2528.5,13669.2148" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="2530.5" y1="13669.2148" y2="13669.2148"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="308" x="12" y="13659.6836">SELECT COUNT(*) FROM "users" INNER JOIN "relations</text><path d="M2541,13638.0156 L2541,13678.0156 A4,4 0 0 0 2545,13682.0156 L3006,13682.0156 A4,4 0 0 0 3010,13678.0156 L3010,13644.0156 L3000,13634.0156 L2545,13634.0156 A4,4 0 0 0 2541,13638.0156 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M3000,13634.0156 L3000,13642.0156 A2,2 0 0 0 3002,13644.0156 L3010,13644.0156 L3000,13634.0156 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="438" x="2552" y="13655.6172">SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="385" x="2552" y="13669.75">"relationships"."follower_id" WHERE "relationships"."followed_id" = ?</text><polygon fill="#4362B1" points="759,13713.4141,769,13717.4141,759,13721.4141,763,13717.4141" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="765" y1="13717.4141" y2="13717.4141"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="12" y="13707.8828">write</text><polygon fill="#4362B1" points="11,13751.5469,1,13755.5469,11,13759.5469,7,13755.5469" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="775" y1="13755.5469" y2="13755.5469"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="22" y="13746.0156">integer</text><polygon fill="#4362B1" points="2524.5,13799.7461,2534.5,13803.7461,2524.5,13807.7461,2528.5,13803.7461" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="2530.5" y1="13803.7461" y2="13803.7461"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="295" x="12" y="13794.2148">SELECT "users".* FROM "users" INNER JOIN "relation</text><path d="M2541,13772.5469 L2541,13812.5469 A4,4 0 0 0 2545,13816.5469 L2999,13816.5469 A4,4 0 0 0 3003,13812.5469 L3003,13778.5469 L2993,13768.5469 L2545,13768.5469 A4,4 0 0 0 2541,13772.5469 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><path d="M2993,13768.5469 L2993,13776.5469 A2,2 0 0 0 2995,13778.5469 L3003,13778.5469 L2993,13768.5469 " fill="#4362B1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="431" x="2552" y="13790.1484">SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =</text><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="385" x="2552" y="13804.2813">"relationships"."follower_id" WHERE "relationships"."followed_id" = ?</text><polygon fill="#4362B1" points="593,13847.9453,603,13851.9453,593,13855.9453,597,13851.9453" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="599" y1="13851.9453" y2="13851.9453"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="12" y="13842.4141">invoke_before</text><polygon fill="#4362B1" points="588,13886.0781,598,13890.0781,588,13894.0781,592,13890.0781" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="13890.0781" y2="13890.0781"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="12" y="13880.5469">invoke_after</text><polygon fill="#4362B1" points="11,13924.2109,1,13928.2109,11,13932.2109,7,13928.2109" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="13928.2109" y2="13928.2109"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="13918.6797">array</text><polygon fill="#4362B1" points="759,13962.3438,769,13966.3438,759,13970.3438,763,13966.3438" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="765" y1="13966.3438" y2="13966.3438"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="28" x="12" y="13956.8125">write</text><polygon fill="#4362B1" points="11,14000.4766,1,14004.4766,11,14008.4766,7,14004.4766" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="775" y1="14004.4766" y2="14004.4766"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="40" x="22" y="13994.9453">integer</text><polygon fill="#4362B1" points="2524.5,14038.6094,2534.5,14042.6094,2524.5,14046.6094,2528.5,14042.6094" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="2530.5" y1="14042.6094" y2="14042.6094"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="113" x="12" y="14033.0781">rollback transaction</text><polygon fill="#4362B1" points="593,14076.7422,603,14080.7422,593,14084.7422,597,14080.7422" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="599" y1="14080.7422" y2="14080.7422"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="81" x="12" y="14071.2109">invoke_before</text><polygon fill="#4362B1" points="588,14114.875,598,14118.875,588,14122.875,592,14118.875" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;" x1="0" x2="594" y1="14118.875" y2="14118.875"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="70" x="12" y="14109.3438">invoke_after</text><polygon fill="#4362B1" points="11,14153.0078,1,14157.0078,11,14161.0078,7,14157.0078" style="stroke:#4362B1;stroke-width:1.0;"/><line style="stroke:#4362B1;stroke-width:3.0;stroke-dasharray:2.0,2.0;" x1="5" x2="604" y1="14157.0078" y2="14157.0078"/><text fill="#FFFFFF" font-family="&quot;Verdana&quot;" font-size="12" lengthAdjust="spacing" textLength="30" x="22" y="14147.4766">array</text><!--MD5=[6ac53f2edc86eed2ad214e87b538383f]
@startuml
!includeurl https://raw.githubusercontent.com/getappmap/plantuml-theme/main/appmap-theme.puml
participant HTTP_server_requests as "HTTP server requests"
participant actionpack as "actionpack"
participant activesupport as "activesupport"
participant logger as "logger"
participant activerecord as "activerecord"
participant ruby as "ruby"
participant controllers as "controllers"
participant helpers as "helpers"
participant models as "models"
participant openssl as "openssl"
participant json as "json"
participant views as "views"
participant actionview as "actionview"
participant sprockets as "sprockets"
participant Database as "Database"
[->actionpack: before_setup
activate actionpack
actionpack->activesupport: invoke_before
actionpack->activesupport: invoke_after
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
actionpack->Database: begin transaction
Loop 3 times
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->activesupport: invoke_after
[<- -actionpack: boolean
deactivate actionpack
[->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<- -logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
[<- -activerecord: array
deactivate activerecord
[->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<- -logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
[<- -activerecord: array
deactivate activerecord
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
[->ruby: unpack
activate ruby
[<- -ruby: array
deactivate ruby
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->HTTP_server_requests: POST /login
activate HTTP_server_requests
HTTP_server_requests->actionpack: process_action
activate actionpack
Loop 2 times
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
activesupport->actionpack: []
actionpack->actionpack: update
activate actionpack
actionpack<- -actionpack: object
deactivate actionpack
actionpack->actionpack: []
actionpack<- -activesupport: array
deactivate activesupport
actionpack->controllers: create
activate controllers
controllers->logger: write
activate logger
controllers<- -logger: integer
deactivate logger
controllers->Database: SELECT "users".* FROM "users" WHERE "users"."email
Note right
SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ?
End note
controllers->actionpack: []
controllers->actionpack: destroy
activate actionpack
actionpack->actionpack: clear
actionpack->ruby: unpack
activate ruby
actionpack<- -ruby: array
deactivate ruby
actionpack->ruby: unpack
activate ruby
actionpack<- -ruby: array
deactivate ruby
controllers<- -actionpack: boolean
deactivate actionpack
controllers->helpers: log_in
activate helpers
helpers->actionpack: []=
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
controllers<- -helpers: integer
deactivate helpers
controllers->helpers: remember
activate helpers
helpers->models: remember
activate models
models->models: <u>new_remember_token</u>
activate models
models<- -models: string
deactivate models
models->models: <u>digest</u>
activate models
models->openssl: <u>random_bytes</u>
activate openssl
models<- -openssl: string
deactivate openssl
models<- -models: object
deactivate models
Loop 3 times
models->activesupport: invoke_before
End
models->logger: write
activate logger
models<- -logger: integer
deactivate logger
models->Database: SAVEPOINT active_record_1
models->logger: write
activate logger
models<- -logger: integer
deactivate logger
models->Database: UPDATE "users" SET "remember_digest" = ?, "updated
Note right
UPDATE "users" SET "remember_digest" = ?, "updated_at" = ? WHERE "users"."id" =
?
End note
Loop 3 times
models->activesupport: invoke_after
activate activesupport
models<- -activesupport: array
deactivate activesupport
End
models->logger: write
activate logger
models<- -logger: integer
deactivate logger
models->Database: RELEASE SAVEPOINT active_record_1
helpers<- -models: boolean
deactivate models
helpers->json: generate
activate json
helpers<- -json: string
deactivate json
helpers->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<- -openssl: object
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<- -openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<- -openssl: string
deactivate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<- -json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<- -openssl: string
deactivate openssl
helpers<- -activesupport: string
deactivate activesupport
Loop 2 times
helpers->actionpack: []=
activate actionpack
helpers<- -actionpack: string
deactivate actionpack
End
controllers<- -helpers: string
deactivate helpers
controllers->actionpack: redirect_to
activate actionpack
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
controllers<- -actionpack: string
deactivate actionpack
actionpack<- -controllers: string
deactivate controllers
actionpack->activesupport: invoke_after
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
HTTP_server_requests<- -actionpack: string
deactivate actionpack
[<- -HTTP_server_requests: 302
deactivate HTTP_server_requests
[->json: generate
activate json
[<- -json: string
deactivate json
[->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<- -openssl: OpenSSL::Cipher
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<- -openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<- -openssl: string
deactivate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<- -json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<- -openssl: string
deactivate openssl
[<- -activesupport: string
deactivate activesupport
[->actionpack: []=
activate actionpack
[<- -actionpack: string
deactivate actionpack
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
[->ruby: unpack
activate ruby
[<- -ruby: array
deactivate ruby
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->HTTP_server_requests: GET /users/{id}/followers
activate HTTP_server_requests
HTTP_server_requests->actionpack: process_action
activate actionpack
Loop 2 times
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
activesupport->actionpack: []
actionpack->actionpack: update
activate actionpack
actionpack<- -actionpack: ActionDispatch::Cookies::CookieJar
deactivate actionpack
actionpack->actionpack: []
activate actionpack
actionpack<- -actionpack: string
deactivate actionpack
Loop 3 times
actionpack->ruby: unpack1
activate ruby
actionpack<- -ruby: string
deactivate ruby
End
actionpack->openssl: decrypt
activate openssl
actionpack<- -openssl: OpenSSL::Cipher
deactivate openssl
actionpack->openssl: key=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: iv=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: auth_tag=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: auth_data=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: update
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: final
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->json: parse
activate json
actionpack<- -json: object
deactivate json
actionpack->ruby: unpack1
activate ruby
actionpack<- -ruby: string
deactivate ruby
actionpack->json: parse
activate json
actionpack<- -json: object
deactivate json
activesupport->helpers: logged_in_user
helpers->helpers: logged_in?
activate helpers
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
helpers->logger: write
activate logger
helpers<- -logger: integer
deactivate logger
helpers->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
helpers<- -helpers: object
deactivate helpers
helpers<- -helpers: boolean
deactivate helpers
actionpack<- -activesupport: array
deactivate activesupport
actionpack->controllers: followers
activate controllers
controllers->logger: write
activate logger
controllers<- -logger: integer
deactivate logger
controllers->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
controllers->controllers: page_number
activate controllers
controllers<- -controllers: integer
deactivate controllers
controllers->actionpack: render_to_body
activate actionpack
actionpack->views: <u>render</u>
Loop 5 times
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
End
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->helpers: gravatar_for
activate helpers
views<- -helpers: object
deactivate helpers
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "microposts" WHERE "micropost
Note right
SELECT COUNT(*) FROM "microposts" WHERE "microposts"."user_id" = ?
End note
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."followed_id" WHERE "relationships"."follower_id" = ?
End note
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
views->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<- -logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" INNER JOIN "relation
Note right
SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?
OFFSET ?
End note
views<- -activerecord: array
deactivate activerecord
Loop 2 times
views->helpers: gravatar_for
activate helpers
views<- -helpers: ActiveSupport::SafeBuffer
deactivate helpers
End
views->views: <u>render</u>
views->activerecord: records
activate activerecord
views<- -activerecord: array
deactivate activerecord
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
Loop 2 times
views->helpers: gravatar_for
activate helpers
views<- -helpers: ActiveSupport::SafeBuffer
deactivate helpers
views->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
views<- -helpers: User
deactivate helpers
views->helpers: current_user?
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
helpers<- -helpers: User
deactivate helpers
End
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->helpers: full_title
activate helpers
views<- -helpers: ActiveSupport::SafeBuffer
deactivate helpers
views->sprockets: <u>unmarshaled_deflated</u>
activate sprockets
sprockets->ruby: <u>load</u>
activate ruby
sprockets<- -ruby: array
deactivate ruby
views<- -sprockets: array
deactivate sprockets
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->json: parse
activate json
views<- -json: object
deactivate json
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->helpers: logged_in?
activate helpers
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
helpers<- -helpers: User
deactivate helpers
views<- -helpers: boolean
deactivate helpers
Loop 2 times
views->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
views<- -helpers: User
deactivate helpers
End
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->actionpack: []
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
controllers<- -actionpack: ActionView::OutputBuffer
deactivate actionpack
actionpack<- -controllers: ActionView::OutputBuffer
deactivate controllers
actionpack->activesupport: invoke_after
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
HTTP_server_requests<- -actionpack: object
deactivate actionpack
[<- -HTTP_server_requests: 200
deactivate HTTP_server_requests
[->json: generate
activate json
[<- -json: string
deactivate json
[->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<- -openssl: OpenSSL::Cipher
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<- -openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<- -openssl: string
deactivate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<- -json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<- -openssl: string
deactivate openssl
[<- -activesupport: string
deactivate activesupport
[->actionpack: []=
activate actionpack
[<- -actionpack: string
deactivate actionpack
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: SELECT 1 AS one FROM "users" INNER JOIN "relations
Note right
SELECT 1 AS one FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?
End note
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: SELECT "users".* FROM "users" INNER JOIN "relation
Note right
SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
[->activesupport: invoke_before
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: rollback transaction
[->activesupport: invoke_before
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
@enduml
@startuml
skinparam backgroundColor black
skinparam useBetaStyle false
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor #ADAFAE
skinparam stereotype {
CBackgroundColor #777777
CBorderColor $SECONDARY_LIGHT
ABackgroundColor $SUCCESS_LIGHT
ABorderColor #92C233
IBackgroundColor $DANGER_LIGHT
IBorderColor #D63333
EBackgroundColor $WARNING_LIGHT
EBorderColor #FFA033
NBackgroundColor $INFO_LIGHT
NBorderColor #AD5CD6
}
skinparam swimlane {
BorderColor #9933CC
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-#555
TitleFontColor #4362b1
}
skinparam activity {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
BarColor #77B300
StartColor #9933CC
EndColor #9933CC
DiamondBackgroundColor transparent
DiamondBorderColor #777777
DiamondFontColor #777777
}
skinparam participant {
FontColor #FFF
BorderColor #555
BackgroundColor #555
BorderThickness 1
}
skinparam actor {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor #4362b1
}
skinparam arrow {
Thickness 3
Color #4362b1
FontColor #FFF
}
skinparam sequence {
BorderColor #4362b1
TitleFontColor #4362b1
BackgroundColor transparent
StartColor #4362b1
EndColor #4362b1
BoxBackgroundColor transparent
BoxBorderColor #ADAFAE
BoxFontColor #ADAFAE
DelayFontColor #ADAFAE
LifeLineBorderColor 999
LifeLineBorderThickness 2
LifeLineBackgroundColor transparent
GroupBorderColor #4362b1
GroupFontColor #4362b1
GroupHeaderFontColor #FFF
GroupBackgroundColor #4362b1
GroupBodyBackgroundColor transparent
GroupHeaderBackgroundColor transparent
DividerBackgroundColor transparent
DividerBorderColor #ADAFAE
DividerBorderThickness 2
DividerFontColor #ADAFAE
ReferenceBackgroundColor transparent
ReferenceBorderColor #ADAFAE
ReferenceFontColor #ADAFAE
ReferenceHeaderFontColor #9933CC
ReferenceHeaderBackgroundColor transparent
StereotypeFontColor #4362b1
}
skinparam partition {
BorderColor #4362b1
FontColor #4362b1
BackgroundColor transparent
}
skinparam collections {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
}
skinparam control {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor #4362b1
}
skinparam entity {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor #4362b1
}
skinparam boundary {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor #4362b1
}
skinparam agent {
BackgroundColor transparent
BorderColor $WARNING_LIGHT
FontColor #ADAFAE
}
skinparam note {
BorderThickness 1
BackgroundColor #4362b1
BorderColor black
FontColor #FFF
}
skinparam artifact {
BackgroundColor transparent
BorderColor #BDBFBE
FontColor #BDBFBE
}
skinparam component {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor #BDBFBE
}
skinparam interface {
BackgroundColor transparent
BorderColor #CC0000
FontColor #ADAFAE
}
skinparam storage {
BackgroundColor transparent
BorderColor #FFA033
FontColor #FF8800
}
skinparam node {
BackgroundColor transparent
BorderColor #ADAFAE
FontColor #ADAFAE
}
skinparam cloud {
BackgroundColor transparent
BorderColor #F2FCFE
FontColor #ADAFAE
}
skinparam database {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor #4362b1
}
skinparam class {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
FontColor $LIGHT
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor #ADAFAE
BorderThickness 1
AttributeFontColor #ADAFAE
AttributeFontSize 11
}
skinparam object {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
StereotypeFontColor #ADAFAE
BorderThickness 1
AttributeFontColor #777777
AttributeFontSize 11
}
skinparam usecase {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
BorderThickness 2
StereotypeFontColor #4362b1
}
skinparam rectangle {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
BorderThickness 2
StereotypeFontColor #4362b1
}
skinparam package {
BackgroundColor transparent
BorderColor #4362b1
FontColor #4362b1
BorderThickness 2
}
skinparam folder {
BackgroundColor transparent
BorderColor #FF8800
FontColor #FF8800
BorderThickness 2
}
skinparam frame {
BackgroundColor transparent
BorderColor #9933CC
FontColor #9933CC
BorderThickness 2
}
skinparam state {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
StartColor #9933CC
EndColor #9933CC
AttributeFontColor #777777
AttributeFontSize 11
}
skinparam queue {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
}
skinparam card {
BackgroundColor transparent
BorderColor #9933CC
FontColor #9933CC
}
skinparam file {
BackgroundColor transparent
BorderColor #555
FontColor #555
}
skinparam stack {
FontColor #4362b1
BorderColor #55B2DE
BackgroundColor transparent
}
participant HTTP_server_requests as "HTTP server requests"
participant actionpack as "actionpack"
participant activesupport as "activesupport"
participant logger as "logger"
participant activerecord as "activerecord"
participant ruby as "ruby"
participant controllers as "controllers"
participant helpers as "helpers"
participant models as "models"
participant openssl as "openssl"
participant json as "json"
participant views as "views"
participant actionview as "actionview"
participant sprockets as "sprockets"
participant Database as "Database"
[->actionpack: before_setup
activate actionpack
actionpack->activesupport: invoke_before
actionpack->activesupport: invoke_after
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
actionpack->Database: begin transaction
Loop 3 times
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->activesupport: invoke_after
[<- -actionpack: boolean
deactivate actionpack
[->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<- -logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
[<- -activerecord: array
deactivate activerecord
[->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<- -logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
[<- -activerecord: array
deactivate activerecord
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
[->ruby: unpack
activate ruby
[<- -ruby: array
deactivate ruby
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->HTTP_server_requests: POST /login
activate HTTP_server_requests
HTTP_server_requests->actionpack: process_action
activate actionpack
Loop 2 times
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
activesupport->actionpack: []
actionpack->actionpack: update
activate actionpack
actionpack<- -actionpack: object
deactivate actionpack
actionpack->actionpack: []
actionpack<- -activesupport: array
deactivate activesupport
actionpack->controllers: create
activate controllers
controllers->logger: write
activate logger
controllers<- -logger: integer
deactivate logger
controllers->Database: SELECT "users".* FROM "users" WHERE "users"."email
Note right
SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ?
End note
controllers->actionpack: []
controllers->actionpack: destroy
activate actionpack
actionpack->actionpack: clear
actionpack->ruby: unpack
activate ruby
actionpack<- -ruby: array
deactivate ruby
actionpack->ruby: unpack
activate ruby
actionpack<- -ruby: array
deactivate ruby
controllers<- -actionpack: boolean
deactivate actionpack
controllers->helpers: log_in
activate helpers
helpers->actionpack: []=
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
controllers<- -helpers: integer
deactivate helpers
controllers->helpers: remember
activate helpers
helpers->models: remember
activate models
models->models: <u>new_remember_token</u>
activate models
models<- -models: string
deactivate models
models->models: <u>digest</u>
activate models
models->openssl: <u>random_bytes</u>
activate openssl
models<- -openssl: string
deactivate openssl
models<- -models: object
deactivate models
Loop 3 times
models->activesupport: invoke_before
End
models->logger: write
activate logger
models<- -logger: integer
deactivate logger
models->Database: SAVEPOINT active_record_1
models->logger: write
activate logger
models<- -logger: integer
deactivate logger
models->Database: UPDATE "users" SET "remember_digest" = ?, "updated
Note right
UPDATE "users" SET "remember_digest" = ?, "updated_at" = ? WHERE "users"."id" =
?
End note
Loop 3 times
models->activesupport: invoke_after
activate activesupport
models<- -activesupport: array
deactivate activesupport
End
models->logger: write
activate logger
models<- -logger: integer
deactivate logger
models->Database: RELEASE SAVEPOINT active_record_1
helpers<- -models: boolean
deactivate models
helpers->json: generate
activate json
helpers<- -json: string
deactivate json
helpers->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<- -openssl: object
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<- -openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<- -openssl: string
deactivate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<- -json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<- -openssl: string
deactivate openssl
helpers<- -activesupport: string
deactivate activesupport
Loop 2 times
helpers->actionpack: []=
activate actionpack
helpers<- -actionpack: string
deactivate actionpack
End
controllers<- -helpers: string
deactivate helpers
controllers->actionpack: redirect_to
activate actionpack
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
controllers<- -actionpack: string
deactivate actionpack
actionpack<- -controllers: string
deactivate controllers
actionpack->activesupport: invoke_after
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
HTTP_server_requests<- -actionpack: string
deactivate actionpack
[<- -HTTP_server_requests: 302
deactivate HTTP_server_requests
[->json: generate
activate json
[<- -json: string
deactivate json
[->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<- -openssl: OpenSSL::Cipher
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<- -openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<- -openssl: string
deactivate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<- -json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<- -openssl: string
deactivate openssl
[<- -activesupport: string
deactivate activesupport
[->actionpack: []=
activate actionpack
[<- -actionpack: string
deactivate actionpack
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
[->ruby: unpack
activate ruby
[<- -ruby: array
deactivate ruby
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->HTTP_server_requests: GET /users/{id}/followers
activate HTTP_server_requests
HTTP_server_requests->actionpack: process_action
activate actionpack
Loop 2 times
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
activesupport->actionpack: []
actionpack->actionpack: update
activate actionpack
actionpack<- -actionpack: ActionDispatch::Cookies::CookieJar
deactivate actionpack
actionpack->actionpack: []
activate actionpack
actionpack<- -actionpack: string
deactivate actionpack
Loop 3 times
actionpack->ruby: unpack1
activate ruby
actionpack<- -ruby: string
deactivate ruby
End
actionpack->openssl: decrypt
activate openssl
actionpack<- -openssl: OpenSSL::Cipher
deactivate openssl
actionpack->openssl: key=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: iv=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: auth_tag=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: auth_data=
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: update
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->openssl: final
activate openssl
actionpack<- -openssl: string
deactivate openssl
actionpack->json: parse
activate json
actionpack<- -json: object
deactivate json
actionpack->ruby: unpack1
activate ruby
actionpack<- -ruby: string
deactivate ruby
actionpack->json: parse
activate json
actionpack<- -json: object
deactivate json
activesupport->helpers: logged_in_user
helpers->helpers: logged_in?
activate helpers
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
helpers->logger: write
activate logger
helpers<- -logger: integer
deactivate logger
helpers->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
helpers<- -helpers: object
deactivate helpers
helpers<- -helpers: boolean
deactivate helpers
actionpack<- -activesupport: array
deactivate activesupport
actionpack->controllers: followers
activate controllers
controllers->logger: write
activate logger
controllers<- -logger: integer
deactivate logger
controllers->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
controllers->controllers: page_number
activate controllers
controllers<- -controllers: integer
deactivate controllers
controllers->actionpack: render_to_body
activate actionpack
actionpack->views: <u>render</u>
Loop 5 times
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
End
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->helpers: gravatar_for
activate helpers
views<- -helpers: object
deactivate helpers
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "microposts" WHERE "micropost
Note right
SELECT COUNT(*) FROM "microposts" WHERE "microposts"."user_id" = ?
End note
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."followed_id" WHERE "relationships"."follower_id" = ?
End note
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
views->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<- -logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" INNER JOIN "relation
Note right
SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?
OFFSET ?
End note
views<- -activerecord: array
deactivate activerecord
Loop 2 times
views->helpers: gravatar_for
activate helpers
views<- -helpers: ActiveSupport::SafeBuffer
deactivate helpers
End
views->views: <u>render</u>
views->activerecord: records
activate activerecord
views<- -activerecord: array
deactivate activerecord
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
Loop 2 times
views->helpers: gravatar_for
activate helpers
views<- -helpers: ActiveSupport::SafeBuffer
deactivate helpers
views->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
views<- -helpers: User
deactivate helpers
views->helpers: current_user?
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
helpers<- -helpers: User
deactivate helpers
End
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->helpers: full_title
activate helpers
views<- -helpers: ActiveSupport::SafeBuffer
deactivate helpers
views->sprockets: <u>unmarshaled_deflated</u>
activate sprockets
sprockets->ruby: <u>load</u>
activate ruby
sprockets<- -ruby: array
deactivate ruby
views<- -sprockets: array
deactivate sprockets
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->json: parse
activate json
views<- -json: object
deactivate json
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->helpers: logged_in?
activate helpers
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
helpers<- -helpers: User
deactivate helpers
views<- -helpers: boolean
deactivate helpers
Loop 2 times
views->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<- -actionpack: integer
deactivate actionpack
views<- -helpers: User
deactivate helpers
End
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
views->actionpack: []
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<- -actionview: array
deactivate actionview
views->logger: write
activate logger
views<- -logger: integer
deactivate logger
controllers<- -actionpack: ActionView::OutputBuffer
deactivate actionpack
actionpack<- -controllers: ActionView::OutputBuffer
deactivate controllers
actionpack->activesupport: invoke_after
activate activesupport
actionpack<- -activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<- -logger: integer
deactivate logger
HTTP_server_requests<- -actionpack: object
deactivate actionpack
[<- -HTTP_server_requests: 200
deactivate HTTP_server_requests
[->json: generate
activate json
[<- -json: string
deactivate json
[->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<- -openssl: OpenSSL::Cipher
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<- -openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<- -openssl: string
deactivate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<- -json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<- -openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<- -openssl: string
deactivate openssl
[<- -activesupport: string
deactivate activesupport
[->actionpack: []=
activate actionpack
[<- -actionpack: string
deactivate actionpack
[->activesupport: invoke_before
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: SELECT 1 AS one FROM "users" INNER JOIN "relations
Note right
SELECT 1 AS one FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?
End note
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: SELECT "users".* FROM "users" INNER JOIN "relation
Note right
SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
[->activesupport: invoke_before
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
[->logger: write
activate logger
[<- -logger: integer
deactivate logger
[->Database: rollback transaction
[->activesupport: invoke_before
[->activesupport: invoke_after
activate activesupport
[<- -activesupport: array
deactivate activesupport
@enduml
PlantUML version 1.2022.8(Sun Sep 25 05:00:33 EDT 2022)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>
@startuml
!includeurl https://raw.githubusercontent.com/getappmap/plantuml-theme/main/appmap-theme.puml
participant HTTP_server_requests as "HTTP server requests"
participant actionpack as "actionpack"
participant activesupport as "activesupport"
participant logger as "logger"
participant activerecord as "activerecord"
participant ruby as "ruby"
participant controllers as "controllers"
participant helpers as "helpers"
participant models as "models"
participant openssl as "openssl"
participant json as "json"
participant views as "views"
participant actionview as "actionview"
participant sprockets as "sprockets"
participant Database as "Database"
[->actionpack: before_setup
activate actionpack
actionpack->activesupport: invoke_before
actionpack->activesupport: invoke_after
activate activesupport
actionpack<--activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
actionpack->Database: begin transaction
Loop 3 times
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
actionpack<--activesupport: array
deactivate activesupport
actionpack->activesupport: invoke_after
[<--actionpack: boolean
deactivate actionpack
[->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<--logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
[<--activerecord: array
deactivate activerecord
[->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<--logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
[<--activerecord: array
deactivate activerecord
[->activesupport: invoke_before
activate activesupport
[<--activesupport: array
deactivate activesupport
[->activesupport: invoke_after
[->ruby: unpack
activate ruby
[<--ruby: array
deactivate ruby
[->logger: write
activate logger
[<--logger: integer
deactivate logger
[->HTTP_server_requests: POST /login
activate HTTP_server_requests
HTTP_server_requests->actionpack: process_action
activate actionpack
Loop 2 times
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
activesupport->actionpack: []
actionpack->actionpack: update
activate actionpack
actionpack<--actionpack: object
deactivate actionpack
actionpack->actionpack: []
actionpack<--activesupport: array
deactivate activesupport
actionpack->controllers: create
activate controllers
controllers->logger: write
activate logger
controllers<--logger: integer
deactivate logger
controllers->Database: SELECT "users".* FROM "users" WHERE "users"."email
Note right
SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ?
End note
controllers->actionpack: []
controllers->actionpack: destroy
activate actionpack
actionpack->actionpack: clear
actionpack->ruby: unpack
activate ruby
actionpack<--ruby: array
deactivate ruby
actionpack->ruby: unpack
activate ruby
actionpack<--ruby: array
deactivate ruby
controllers<--actionpack: boolean
deactivate actionpack
controllers->helpers: log_in
activate helpers
helpers->actionpack: []=
activate actionpack
helpers<--actionpack: integer
deactivate actionpack
controllers<--helpers: integer
deactivate helpers
controllers->helpers: remember
activate helpers
helpers->models: remember
activate models
models->models: <u>new_remember_token</u>
activate models
models<--models: string
deactivate models
models->models: <u>digest</u>
activate models
models->openssl: <u>random_bytes</u>
activate openssl
models<--openssl: string
deactivate openssl
models<--models: object
deactivate models
Loop 3 times
models->activesupport: invoke_before
End
models->logger: write
activate logger
models<--logger: integer
deactivate logger
models->Database: SAVEPOINT active_record_1
models->logger: write
activate logger
models<--logger: integer
deactivate logger
models->Database: UPDATE "users" SET "remember_digest" = ?, "updated
Note right
UPDATE "users" SET "remember_digest" = ?, "updated_at" = ? WHERE "users"."id" =
?
End note
Loop 3 times
models->activesupport: invoke_after
activate activesupport
models<--activesupport: array
deactivate activesupport
End
models->logger: write
activate logger
models<--logger: integer
deactivate logger
models->Database: RELEASE SAVEPOINT active_record_1
helpers<--models: boolean
deactivate models
helpers->json: generate
activate json
helpers<--json: string
deactivate json
helpers->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<--openssl: object
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<--openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<--openssl: string
deactivate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<--json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<--openssl: string
deactivate openssl
helpers<--activesupport: string
deactivate activesupport
Loop 2 times
helpers->actionpack: []=
activate actionpack
helpers<--actionpack: string
deactivate actionpack
End
controllers<--helpers: string
deactivate helpers
controllers->actionpack: redirect_to
activate actionpack
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
controllers<--actionpack: string
deactivate actionpack
actionpack<--controllers: string
deactivate controllers
actionpack->activesupport: invoke_after
activate activesupport
actionpack<--activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
HTTP_server_requests<--actionpack: string
deactivate actionpack
[<--HTTP_server_requests: 302
deactivate HTTP_server_requests
[->json: generate
activate json
[<--json: string
deactivate json
[->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<--openssl: OpenSSL::Cipher
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<--openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<--openssl: string
deactivate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<--json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<--openssl: string
deactivate openssl
[<--activesupport: string
deactivate activesupport
[->actionpack: []=
activate actionpack
[<--actionpack: string
deactivate actionpack
[->activesupport: invoke_before
activate activesupport
[<--activesupport: array
deactivate activesupport
[->activesupport: invoke_after
activate activesupport
[<--activesupport: array
deactivate activesupport
[->activesupport: invoke_before
activate activesupport
[<--activesupport: array
deactivate activesupport
[->activesupport: invoke_after
[->ruby: unpack
activate ruby
[<--ruby: array
deactivate ruby
[->logger: write
activate logger
[<--logger: integer
deactivate logger
[->HTTP_server_requests: GET /users/{id}/followers
activate HTTP_server_requests
HTTP_server_requests->actionpack: process_action
activate actionpack
Loop 2 times
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
End
actionpack->activesupport: invoke_before
activate activesupport
activesupport->actionpack: []
actionpack->actionpack: update
activate actionpack
actionpack<--actionpack: ActionDispatch::Cookies::CookieJar
deactivate actionpack
actionpack->actionpack: []
activate actionpack
actionpack<--actionpack: string
deactivate actionpack
Loop 3 times
actionpack->ruby: unpack1
activate ruby
actionpack<--ruby: string
deactivate ruby
End
actionpack->openssl: decrypt
activate openssl
actionpack<--openssl: OpenSSL::Cipher
deactivate openssl
actionpack->openssl: key=
activate openssl
actionpack<--openssl: string
deactivate openssl
actionpack->openssl: iv=
activate openssl
actionpack<--openssl: string
deactivate openssl
actionpack->openssl: auth_tag=
activate openssl
actionpack<--openssl: string
deactivate openssl
actionpack->openssl: auth_data=
activate openssl
actionpack<--openssl: string
deactivate openssl
actionpack->openssl: update
activate openssl
actionpack<--openssl: string
deactivate openssl
actionpack->openssl: final
activate openssl
actionpack<--openssl: string
deactivate openssl
actionpack->json: parse
activate json
actionpack<--json: object
deactivate json
actionpack->ruby: unpack1
activate ruby
actionpack<--ruby: string
deactivate ruby
actionpack->json: parse
activate json
actionpack<--json: object
deactivate json
activesupport->helpers: logged_in_user
helpers->helpers: logged_in?
activate helpers
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<--actionpack: integer
deactivate actionpack
helpers->logger: write
activate logger
helpers<--logger: integer
deactivate logger
helpers->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
helpers<--helpers: object
deactivate helpers
helpers<--helpers: boolean
deactivate helpers
actionpack<--activesupport: array
deactivate activesupport
actionpack->controllers: followers
activate controllers
controllers->logger: write
activate logger
controllers<--logger: integer
deactivate logger
controllers->Database: SELECT "users".* FROM "users" WHERE "users"."id" =
Note right
SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?
End note
controllers->controllers: page_number
activate controllers
controllers<--controllers: integer
deactivate controllers
controllers->actionpack: render_to_body
activate actionpack
actionpack->views: <u>render</u>
Loop 5 times
views->actionview: find_all
activate actionview
views<--actionview: array
deactivate actionview
End
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->helpers: gravatar_for
activate helpers
views<--helpers: object
deactivate helpers
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "microposts" WHERE "micropost
Note right
SELECT COUNT(*) FROM "microposts" WHERE "microposts"."user_id" = ?
End note
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<--actionview: array
deactivate actionview
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."followed_id" WHERE "relationships"."follower_id" = ?
End note
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
views->activerecord: records
activate activerecord
activerecord->logger: write
activate logger
activerecord<--logger: integer
deactivate logger
activerecord->Database: SELECT "users".* FROM "users" INNER JOIN "relation
Note right
SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?
OFFSET ?
End note
views<--activerecord: array
deactivate activerecord
Loop 2 times
views->helpers: gravatar_for
activate helpers
views<--helpers: ActiveSupport::SafeBuffer
deactivate helpers
End
views->views: <u>render</u>
views->activerecord: records
activate activerecord
views<--activerecord: array
deactivate activerecord
views->actionview: find_all
activate actionview
views<--actionview: array
deactivate actionview
Loop 2 times
views->helpers: gravatar_for
activate helpers
views<--helpers: ActiveSupport::SafeBuffer
deactivate helpers
views->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<--actionpack: integer
deactivate actionpack
views<--helpers: User
deactivate helpers
views->helpers: current_user?
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<--actionpack: integer
deactivate actionpack
helpers<--helpers: User
deactivate helpers
End
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->helpers: full_title
activate helpers
views<--helpers: ActiveSupport::SafeBuffer
deactivate helpers
views->sprockets: <u>unmarshaled_deflated</u>
activate sprockets
sprockets->ruby: <u>load</u>
activate ruby
sprockets<--ruby: array
deactivate ruby
views<--sprockets: array
deactivate sprockets
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->json: parse
activate json
views<--json: object
deactivate json
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<--actionview: array
deactivate actionview
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<--actionview: array
deactivate actionview
views->helpers: logged_in?
activate helpers
helpers->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<--actionpack: integer
deactivate actionpack
helpers<--helpers: User
deactivate helpers
views<--helpers: boolean
deactivate helpers
Loop 2 times
views->helpers: current_user
activate helpers
helpers->actionpack: []
activate actionpack
helpers<--actionpack: integer
deactivate actionpack
views<--helpers: User
deactivate helpers
End
views->logger: write
activate logger
views<--logger: integer
deactivate logger
views->actionpack: []
views->views: <u>render</u>
views->actionview: find_all
activate actionview
views<--actionview: array
deactivate actionview
views->logger: write
activate logger
views<--logger: integer
deactivate logger
controllers<--actionpack: ActionView::OutputBuffer
deactivate actionpack
actionpack<--controllers: ActionView::OutputBuffer
deactivate controllers
actionpack->activesupport: invoke_after
activate activesupport
actionpack<--activesupport: array
deactivate activesupport
actionpack->logger: write
activate logger
actionpack<--logger: integer
deactivate logger
HTTP_server_requests<--actionpack: object
deactivate actionpack
[<--HTTP_server_requests: 200
deactivate HTTP_server_requests
[->json: generate
activate json
[<--json: string
deactivate json
[->activesupport: encrypt_and_sign
activate activesupport
activesupport->openssl: encrypt
activate openssl
activesupport<--openssl: OpenSSL::Cipher
deactivate openssl
activesupport->openssl: key=
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: random_iv
activate openssl
openssl->openssl: <u>random_bytes</u>
activate openssl
openssl<--openssl: string
deactivate openssl
openssl->openssl: iv=
activate openssl
openssl<--openssl: string
deactivate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: auth_data=
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->json: generate
activate json
activesupport<--json: string
deactivate json
activesupport->openssl: update
activate openssl
activesupport<--openssl: string
deactivate openssl
activesupport->openssl: final
activate openssl
activesupport<--openssl: string
deactivate openssl
[<--activesupport: string
deactivate activesupport
[->actionpack: []=
activate actionpack
[<--actionpack: string
deactivate actionpack
[->activesupport: invoke_before
activate activesupport
[<--activesupport: array
deactivate activesupport
[->activesupport: invoke_after
activate activesupport
[<--activesupport: array
deactivate activesupport
[->logger: write
activate logger
[<--logger: integer
deactivate logger
[->Database: SELECT 1 AS one FROM "users" INNER JOIN "relations
Note right
SELECT 1 AS one FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ? LIMIT ?
End note
[->logger: write
activate logger
[<--logger: integer
deactivate logger
[->Database: SELECT COUNT(*) FROM "users" INNER JOIN "relations
Note right
SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
[->logger: write
activate logger
[<--logger: integer
deactivate logger
[->Database: SELECT "users".* FROM "users" INNER JOIN "relation
Note right
SELECT "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" =
"relationships"."follower_id" WHERE "relationships"."followed_id" = ?
End note
[->activesupport: invoke_before
[->activesupport: invoke_after
activate activesupport
[<--activesupport: array
deactivate activesupport
[->logger: write
activate logger
[<--logger: integer
deactivate logger
[->Database: rollback transaction
[->activesupport: invoke_before
[->activesupport: invoke_after
activate activesupport
[<--activesupport: array
deactivate activesupport
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment