diff --git a/ruby/ql/docs/flow_summaries.md b/ruby/ql/docs/flow_summaries.md new file mode 100644 index 000000000000..0bc8c5e190a4 --- /dev/null +++ b/ruby/ql/docs/flow_summaries.md @@ -0,0 +1,277 @@ +# Flow summaries + +Flow summaries describe how data flows through methods whose definition is not +included in the database. For example, methods in the standard library or a gem. + +Say we have the following code: + +```rb +x = gets +y = x.chomp +system(y) +``` + +This code reads a line from STDIN, strips any trailing newlines, and executes it +as a shell command. Assuming `x` is considered tainted, we want the argument `y` +to be tainted in the call to `system`. + +`chomp` is a standard library method in the `String` class for which we +have no source code, so we include a flow summary for it: + +```ql +private class ChompSummary extends SimpleSummarizedCallable { + ChompSummary() { this = "chomp" } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[self]" and + output = "ReturnValue" and + preservesValue = false + } +} +``` + +The shared dataflow library will use this summary to construct a fake definition +for `chomp`. The behaviour of this definition depends on the body of +`propagatesFlowExt`. In this case, the method will propagate taint flow from the +`self` argument (i.e. the receiver) to the return value. + +If `preservesValue = true` then value flow is propagated. If it is `false` then +only taint flow is propagated. + +Any call to `chomp` in the database will be translated, in the dataflow graph, +to a call to this fake definition. + +`input` and `output` define the "from" and "to" locations in the flow summary. +They use a custom string-based syntax which is similar to that used in `path` +column in the Models as Data format. These strings are often referred to as +access paths. + +Note: The behaviour documented below is tested in +`dataflow/flow-summaries/behaviour.ql`. Where specific quirks exist, we may +reference a particular test case in this file which demonstrates the quirk. + +# Syntax + +Access paths consist of zero or more components separated by dots (`.`). The +permitted components differ for input and output paths. The meaning of each +component is defined relative to the implicit context of the component as +defined by the preceding access path. For example, + +``` +Argument[0].Element[1].ReturnValue +``` + +refers to the return value of the element at index 1 in the array at argument 0 +of the method call. + +## `Argument` and `Parameter` + +The `Argument` and `Parameter` components refer respectively to an argument to a +call or a parameter of a callable. They contain one or more _specifiers_[^1] which +constrain the range of arguments/parameters that the component refers to. For +example, `Argument[0]` refers to the first argument. + +If multiple specifiers are given then the result is a disjunction, meaning that +the component refers to any argument/parameter that satisfies at least one of +the specifiers. For example, `Argument[0, 1]` refers to the first and second +arguments. + +### Specifiers + +#### `self` +The receiver of the call. + +#### `` +The argument to the method call at the position given by the integer. For +example, `Argument[0]` refers to the first argument to the call. + +#### `..` +An argument to the call at a position greater or equal to the integer. For +example, `Argument[1..]` refers to all arguments except the first one. This +specifier is not available on `Parameter` components. + +#### `:` +A keyword argument to the call with the given name. For example, +`Argument[foo:]` refers to the keyword argument `foo:` in the call. + +#### `block` +The block argument passed to the call, if any. + +#### `any` +Any argument to the call, except `self` or `block` arguments. + +#### `any-named` +Any keyword argument to the call. + +#### `hash-splat` +The special "hash splat" argument/parameter, which is written as `**args`. +When used in an `Argument` component, this specifier refers to special dataflow +node which is constructed at the call site, containing any elements in a hash +splat argument (`**args`) along with any explicit keyword arguments (`foo: +bar`). The node behaves like a normal dataflow node for a hash, meaning that you +can access specific elements of it using the `Element` component. + +For example, the following flow summary states that values flow from any keyword +arguments (including those in a hash splat) to the return value: + +```ql +input = "Argument[hash-splat].Element[any]" and +output = "ReturnValue" and +preservesValue = true +``` + +Assuming this summary is for a global method `foo`, the following test will pass: + +```rb +a = source "a" +b = source "b" + +h = {a: a} + +x = foo(b: b, **h) + +sink x # $ hasValueFlow=a hasValueFlow=b +``` + +If the method returns the hash itself, you will need to use `WithElement` in +order to preserve taint/value in its elements. For example: + +```ql +input = "Argument[hash-splat].WithElement[any]" and +output = "ReturnValue" and +preservesValue = true +``` +```rb +a = source "a" +x = foo(a: a) +sink x[:a] # $ hasValueFlow=a +``` + +## `ReturnValue` +`ReturnValue` refers to the return value of the element identified in the +preceding access path. For example, `Argument[0].ReturnValue` refers to the +return value of the first argument. Of course this only makes sense if the first +argument is a callable. + +## `Element` +This component refers to elements inside a collection of some sort. Typically +this is an Array or Hash. Elements are considered to have an index, which is an +integer in arrays and a symbol or string in hashes (even though hashes can have +arbitrary objects as keys). Elements can also have an unknown index, which means +we know the element exists in the collection but we don't know where. + +Many of the specifiers have an optional suffix `!`. If this suffix is used then +the specifier excludes elements at unknown indices. Otherwise, these are +included by default. + +### Specifiers + +#### `?` +If used in an input path: an element at an unknown index. If used in an output +path: an element at any known or unkown index. In other words, `?` in an output +path means the same as `any`. + +#### `any` +An element at any known or unknown index. + +#### ``, `!` +An element at the index given by the integer. + +#### `..`, `..!` +Any element at a known index greater or equal to the integer. + +#### ``, `!` +An element at the index given by string. The string should match the result of +`serialize()` on the `ConstantValue` that represents the index. For a string +with contents `foo` this is `"foo"` and for a symbol `:foo` it is `:foo`. The +Ruby values `true`, `false` and `nil` can be written verbatim. See tests 31-33 +for examples. + +## `Field` +A "field" in the object. In practice this refers to a value stored in an +instance variable in the object. The only valid specifier is `@`, where +`` is the name of the instance variable. Currently we assume that a +setter call such as `x.foo = bar` means there is a field `foo` in `x`, backed by +an instance variable `@foo`. + +For example, the access path `Argument[0].Field[@foo]` would refer to the value `"foo"` in + +```rb +x = SomeClass.new +x.foo = "foo" +some_call(x) +``` + +## `WithElement` +This component restricts the set of elements that are included in the preceding +access path to to those at a specific set of indices. The specifiers are the +same as those for `Element`. It is only valid in an input path. + +This component has the effect of copying all relevant elements from the input to +the output. For example, in the following summary: + +```ql +input = "Argument[0].WithElement[1, 2]" and +output = "ReturnValue" +``` + +any data in indices 1 and 2 of the first argument will be copied to indices 1 +and 2 of the return value. We use this in many Hash summaries that return the +receiver, in order to preserve any data stored in it. For example, the summary +for `Hash#to_h` is + +```ql +input = "Argument[self].WithElement[any]" and +output = "ReturnValue" and +preservesValue = true +``` + +## `WithoutElement` +This component is used to exclude certain elements from the set included in the +preceding access path. It takes the same specifiers as `WithElement` and +`Element`. It is only valid in an input path. + +This component has the effect of excluding the relevant elements when copying +from input to output. It is useful for modelling methods that remove elements +from a collection. For example to model a method that removes the first element +from the receiver, we can do so like this: + +```ql +input = "Argument[self].WithoutElement[0]" and +output = "Argument[self]" +``` + +Note that both the input and output refer to the receiver. The effect of this +summary is that use-use flow between the receiver in the method call and a +subsequent use of the same receiver will be blocked: + +```ruby +a[0] = source 0 +a[1] = source 1 + +a.remove_first # use-use flow from `a` on this line to `a` below will be blocked. + # there will still be flow from `[post-update] a` to `a` below. + +sink a[0] +sink a[1] # $ hasValueFlow=1 +``` + +It is also important to note that in a summary such as + +```ql +input = "Argument[self].WithoutElement[0]" and +output = "ReturnValue" +``` + +if `Argument[self]` contains data, it will be copied to `ReturnValue`. If you only want to copy data in elements, and not in the container itself, add `WithElement[any]` to the input path: + +```ql +input = "Argument[self].WithoutElement[0].WithElement[any]" and +output = "ReturnValue" +``` + +See tests 53 and 54 for examples of this behaviour. + + + +[^1]: I've chosen this name to avoid overloading the word "argument". diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll index 29b98a65fd02..abb3f1f14dec 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll @@ -474,9 +474,6 @@ private class TransformKeysBangSummary extends SimpleSummarizedCallable { ( input = "Argument[self].Element[any]" and output = "Argument[self].Element[?]" - or - input = "Argument[self].WithoutElement[any]" and - output = "Argument[self]" ) and preservesValue = true } diff --git a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected new file mode 100644 index 000000000000..63405c9785e5 --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected @@ -0,0 +1,1899 @@ +failures +edges +| semantics.rb:2:9:2:18 | call to source : | semantics.rb:3:9:3:9 | a : | +| semantics.rb:2:9:2:18 | call to source : | semantics.rb:3:9:3:9 | a : | +| semantics.rb:3:9:3:9 | a : | semantics.rb:3:9:3:14 | call to s1 : | +| semantics.rb:3:9:3:9 | a : | semantics.rb:3:9:3:14 | call to s1 : | +| semantics.rb:3:9:3:14 | call to s1 : | semantics.rb:4:10:4:10 | x | +| semantics.rb:3:9:3:14 | call to s1 : | semantics.rb:4:10:4:10 | x | +| semantics.rb:8:9:8:18 | call to source : | semantics.rb:9:10:9:10 | a : | +| semantics.rb:8:9:8:18 | call to source : | semantics.rb:9:10:9:10 | a : | +| semantics.rb:9:5:9:5 | [post] x : | semantics.rb:10:10:10:10 | x | +| semantics.rb:9:5:9:5 | [post] x : | semantics.rb:10:10:10:10 | x | +| semantics.rb:9:10:9:10 | a : | semantics.rb:9:5:9:5 | [post] x : | +| semantics.rb:9:10:9:10 | a : | semantics.rb:9:5:9:5 | [post] x : | +| semantics.rb:14:9:14:18 | call to source : | semantics.rb:15:8:15:8 | a : | +| semantics.rb:14:9:14:18 | call to source : | semantics.rb:15:8:15:8 | a : | +| semantics.rb:15:8:15:8 | a : | semantics.rb:15:11:15:11 | [post] x : | +| semantics.rb:15:8:15:8 | a : | semantics.rb:15:11:15:11 | [post] x : | +| semantics.rb:15:11:15:11 | [post] x : | semantics.rb:16:10:16:10 | x | +| semantics.rb:15:11:15:11 | [post] x : | semantics.rb:16:10:16:10 | x | +| semantics.rb:22:18:22:32 | call to source : | semantics.rb:22:10:22:33 | call to s4 | +| semantics.rb:22:18:22:32 | call to source : | semantics.rb:22:10:22:33 | call to s4 | +| semantics.rb:23:23:23:32 | call to source : | semantics.rb:23:10:23:33 | call to s4 | +| semantics.rb:23:23:23:32 | call to source : | semantics.rb:23:10:23:33 | call to s4 | +| semantics.rb:28:9:28:18 | call to source : | semantics.rb:29:8:29:8 | a : | +| semantics.rb:28:9:28:18 | call to source : | semantics.rb:29:8:29:8 | a : | +| semantics.rb:29:8:29:8 | a : | semantics.rb:29:14:29:14 | [post] y : | +| semantics.rb:29:8:29:8 | a : | semantics.rb:29:14:29:14 | [post] y : | +| semantics.rb:29:8:29:8 | a : | semantics.rb:29:17:29:17 | [post] z : | +| semantics.rb:29:8:29:8 | a : | semantics.rb:29:17:29:17 | [post] z : | +| semantics.rb:29:14:29:14 | [post] y : | semantics.rb:31:10:31:10 | y | +| semantics.rb:29:14:29:14 | [post] y : | semantics.rb:31:10:31:10 | y | +| semantics.rb:29:17:29:17 | [post] z : | semantics.rb:32:10:32:10 | z | +| semantics.rb:29:17:29:17 | [post] z : | semantics.rb:32:10:32:10 | z | +| semantics.rb:40:9:40:18 | call to source : | semantics.rb:41:8:41:8 | a : | +| semantics.rb:40:9:40:18 | call to source : | semantics.rb:41:8:41:8 | a : | +| semantics.rb:41:8:41:8 | a : | semantics.rb:41:16:41:16 | [post] x : | +| semantics.rb:41:8:41:8 | a : | semantics.rb:41:16:41:16 | [post] x : | +| semantics.rb:41:16:41:16 | [post] x : | semantics.rb:42:10:42:10 | x | +| semantics.rb:41:16:41:16 | [post] x : | semantics.rb:42:10:42:10 | x | +| semantics.rb:46:15:46:24 | call to source : | semantics.rb:46:10:46:26 | call to s8 | +| semantics.rb:46:15:46:24 | call to source : | semantics.rb:46:10:46:26 | call to s8 | +| semantics.rb:48:9:48:18 | call to source : | semantics.rb:47:10:49:7 | call to s8 | +| semantics.rb:48:9:48:18 | call to source : | semantics.rb:47:10:49:7 | call to s8 | +| semantics.rb:53:8:53:17 | call to source : | semantics.rb:53:23:53:23 | x : | +| semantics.rb:53:8:53:17 | call to source : | semantics.rb:53:23:53:23 | x : | +| semantics.rb:53:23:53:23 | x : | semantics.rb:53:31:53:31 | x | +| semantics.rb:53:23:53:23 | x : | semantics.rb:53:31:53:31 | x | +| semantics.rb:54:8:54:17 | call to source : | semantics.rb:54:24:54:24 | x : | +| semantics.rb:54:8:54:17 | call to source : | semantics.rb:54:24:54:24 | x : | +| semantics.rb:54:24:54:24 | x : | semantics.rb:55:14:55:14 | x | +| semantics.rb:54:24:54:24 | x : | semantics.rb:55:14:55:14 | x | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:61:14:61:14 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:61:14:61:14 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:62:17:62:17 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:62:17:62:17 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:63:19:63:19 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:63:19:63:19 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:64:27:64:27 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:64:27:64:27 | a : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:66:14:66:15 | &... : | +| semantics.rb:60:9:60:18 | call to source : | semantics.rb:66:14:66:15 | &... : | +| semantics.rb:61:14:61:14 | a : | semantics.rb:61:10:61:15 | call to s10 | +| semantics.rb:61:14:61:14 | a : | semantics.rb:61:10:61:15 | call to s10 | +| semantics.rb:62:17:62:17 | a : | semantics.rb:62:10:62:18 | call to s10 | +| semantics.rb:62:17:62:17 | a : | semantics.rb:62:10:62:18 | call to s10 | +| semantics.rb:63:19:63:19 | a : | semantics.rb:63:10:63:20 | call to s10 | +| semantics.rb:63:19:63:19 | a : | semantics.rb:63:10:63:20 | call to s10 | +| semantics.rb:64:27:64:27 | a : | semantics.rb:64:10:64:28 | call to s10 | +| semantics.rb:64:27:64:27 | a : | semantics.rb:64:10:64:28 | call to s10 | +| semantics.rb:66:14:66:15 | &... : | semantics.rb:66:10:66:16 | call to s10 | +| semantics.rb:66:14:66:15 | &... : | semantics.rb:66:10:66:16 | call to s10 | +| semantics.rb:80:9:80:18 | call to source : | semantics.rb:81:5:81:5 | a : | +| semantics.rb:80:9:80:18 | call to source : | semantics.rb:81:5:81:5 | a : | +| semantics.rb:81:5:81:5 | a : | semantics.rb:81:11:81:11 | [post] x : | +| semantics.rb:81:5:81:5 | a : | semantics.rb:81:11:81:11 | [post] x : | +| semantics.rb:81:5:81:5 | a : | semantics.rb:81:14:81:14 | [post] y : | +| semantics.rb:81:5:81:5 | a : | semantics.rb:81:14:81:14 | [post] y : | +| semantics.rb:81:5:81:5 | a : | semantics.rb:81:22:81:22 | [post] z : | +| semantics.rb:81:5:81:5 | a : | semantics.rb:81:22:81:22 | [post] z : | +| semantics.rb:81:11:81:11 | [post] x : | semantics.rb:82:10:82:10 | x | +| semantics.rb:81:11:81:11 | [post] x : | semantics.rb:82:10:82:10 | x | +| semantics.rb:81:14:81:14 | [post] y : | semantics.rb:83:10:83:10 | y | +| semantics.rb:81:14:81:14 | [post] y : | semantics.rb:83:10:83:10 | y | +| semantics.rb:81:22:81:22 | [post] z : | semantics.rb:84:10:84:10 | z | +| semantics.rb:81:22:81:22 | [post] z : | semantics.rb:84:10:84:10 | z | +| semantics.rb:89:9:89:18 | call to source : | semantics.rb:91:19:91:19 | a : | +| semantics.rb:89:9:89:18 | call to source : | semantics.rb:91:19:91:19 | a : | +| semantics.rb:89:9:89:18 | call to source : | semantics.rb:92:27:92:27 | a : | +| semantics.rb:89:9:89:18 | call to source : | semantics.rb:92:27:92:27 | a : | +| semantics.rb:91:19:91:19 | a : | semantics.rb:91:10:91:20 | call to s13 | +| semantics.rb:91:19:91:19 | a : | semantics.rb:91:10:91:20 | call to s13 | +| semantics.rb:92:27:92:27 | a : | semantics.rb:92:10:92:28 | call to s13 | +| semantics.rb:92:27:92:27 | a : | semantics.rb:92:10:92:28 | call to s13 | +| semantics.rb:97:9:97:18 | call to source : | semantics.rb:98:5:98:5 | a : | +| semantics.rb:97:9:97:18 | call to source : | semantics.rb:98:5:98:5 | a : | +| semantics.rb:97:9:97:18 | call to source : | semantics.rb:99:5:99:5 | a : | +| semantics.rb:97:9:97:18 | call to source : | semantics.rb:99:5:99:5 | a : | +| semantics.rb:98:5:98:5 | a : | semantics.rb:98:19:98:19 | [post] x : | +| semantics.rb:98:5:98:5 | a : | semantics.rb:98:19:98:19 | [post] x : | +| semantics.rb:98:19:98:19 | [post] x : | semantics.rb:101:10:101:10 | x | +| semantics.rb:98:19:98:19 | [post] x : | semantics.rb:101:10:101:10 | x | +| semantics.rb:99:5:99:5 | a : | semantics.rb:99:16:99:16 | [post] y : | +| semantics.rb:99:5:99:5 | a : | semantics.rb:99:16:99:16 | [post] y : | +| semantics.rb:99:5:99:5 | a : | semantics.rb:99:24:99:24 | [post] z : | +| semantics.rb:99:5:99:5 | a : | semantics.rb:99:24:99:24 | [post] z : | +| semantics.rb:99:16:99:16 | [post] y : | semantics.rb:102:10:102:10 | y | +| semantics.rb:99:16:99:16 | [post] y : | semantics.rb:102:10:102:10 | y | +| semantics.rb:99:24:99:24 | [post] z : | semantics.rb:103:10:103:10 | z | +| semantics.rb:99:24:99:24 | [post] z : | semantics.rb:103:10:103:10 | z | +| semantics.rb:107:9:107:18 | call to source : | semantics.rb:109:14:109:16 | ** ... : | +| semantics.rb:107:9:107:18 | call to source : | semantics.rb:110:28:110:30 | ** ... : | +| semantics.rb:109:14:109:16 | ** ... : | semantics.rb:109:10:109:17 | call to s15 | +| semantics.rb:110:28:110:30 | ** ... : | semantics.rb:110:10:110:31 | call to s15 | +| semantics.rb:114:9:114:18 | call to source : | semantics.rb:116:14:116:14 | a : | +| semantics.rb:114:9:114:18 | call to source : | semantics.rb:116:14:116:14 | a : | +| semantics.rb:114:9:114:18 | call to source : | semantics.rb:119:17:119:17 | a : | +| semantics.rb:114:9:114:18 | call to source : | semantics.rb:119:17:119:17 | a : | +| semantics.rb:115:9:115:18 | call to source : | semantics.rb:121:17:121:17 | b : | +| semantics.rb:115:9:115:18 | call to source : | semantics.rb:121:17:121:17 | b : | +| semantics.rb:116:14:116:14 | a : | semantics.rb:117:16:117:16 | h [element :a] : | +| semantics.rb:116:14:116:14 | a : | semantics.rb:117:16:117:16 | h [element :a] : | +| semantics.rb:116:14:116:14 | a : | semantics.rb:121:22:121:22 | h [element :a] : | +| semantics.rb:116:14:116:14 | a : | semantics.rb:121:22:121:22 | h [element :a] : | +| semantics.rb:117:14:117:16 | ** ... [element :a] : | semantics.rb:117:10:117:17 | call to s16 | +| semantics.rb:117:14:117:16 | ** ... [element :a] : | semantics.rb:117:10:117:17 | call to s16 | +| semantics.rb:117:16:117:16 | h [element :a] : | semantics.rb:117:14:117:16 | ** ... [element :a] : | +| semantics.rb:117:16:117:16 | h [element :a] : | semantics.rb:117:14:117:16 | ** ... [element :a] : | +| semantics.rb:119:17:119:17 | a : | semantics.rb:119:10:119:18 | call to s16 | +| semantics.rb:119:17:119:17 | a : | semantics.rb:119:10:119:18 | call to s16 | +| semantics.rb:121:17:121:17 | b : | semantics.rb:121:10:121:23 | call to s16 | +| semantics.rb:121:17:121:17 | b : | semantics.rb:121:10:121:23 | call to s16 | +| semantics.rb:121:20:121:22 | ** ... [element :a] : | semantics.rb:121:10:121:23 | call to s16 | +| semantics.rb:121:20:121:22 | ** ... [element :a] : | semantics.rb:121:10:121:23 | call to s16 | +| semantics.rb:121:22:121:22 | h [element :a] : | semantics.rb:121:20:121:22 | ** ... [element :a] : | +| semantics.rb:121:22:121:22 | h [element :a] : | semantics.rb:121:20:121:22 | ** ... [element :a] : | +| semantics.rb:125:9:125:18 | call to source : | semantics.rb:126:9:126:9 | a : | +| semantics.rb:125:9:125:18 | call to source : | semantics.rb:126:9:126:9 | a : | +| semantics.rb:126:9:126:9 | a : | semantics.rb:126:12:126:14 | [post] ** ... : | +| semantics.rb:126:9:126:9 | a : | semantics.rb:126:12:126:14 | [post] ** ... : | +| semantics.rb:126:12:126:14 | [post] ** ... : | semantics.rb:127:10:127:10 | h | +| semantics.rb:126:12:126:14 | [post] ** ... : | semantics.rb:127:10:127:10 | h | +| semantics.rb:141:9:141:18 | call to source : | semantics.rb:145:5:145:5 | [post] h [element] : | +| semantics.rb:141:9:141:18 | call to source : | semantics.rb:145:5:145:5 | [post] h [element] : | +| semantics.rb:145:5:145:5 | [post] h [element] : | semantics.rb:147:14:147:14 | h [element] : | +| semantics.rb:145:5:145:5 | [post] h [element] : | semantics.rb:147:14:147:14 | h [element] : | +| semantics.rb:147:14:147:14 | h [element] : | semantics.rb:147:10:147:15 | call to s19 | +| semantics.rb:147:14:147:14 | h [element] : | semantics.rb:147:10:147:15 | call to s19 | +| semantics.rb:151:9:151:18 | call to source : | semantics.rb:152:13:152:13 | a : | +| semantics.rb:151:9:151:18 | call to source : | semantics.rb:152:13:152:13 | a : | +| semantics.rb:152:9:152:14 | call to s20 [element] : | semantics.rb:153:10:153:10 | x [element] : | +| semantics.rb:152:9:152:14 | call to s20 [element] : | semantics.rb:153:10:153:10 | x [element] : | +| semantics.rb:152:9:152:14 | call to s20 [element] : | semantics.rb:154:10:154:10 | x [element] : | +| semantics.rb:152:9:152:14 | call to s20 [element] : | semantics.rb:154:10:154:10 | x [element] : | +| semantics.rb:152:13:152:13 | a : | semantics.rb:152:9:152:14 | call to s20 [element] : | +| semantics.rb:152:13:152:13 | a : | semantics.rb:152:9:152:14 | call to s20 [element] : | +| semantics.rb:153:10:153:10 | x [element] : | semantics.rb:153:10:153:13 | ...[...] | +| semantics.rb:153:10:153:10 | x [element] : | semantics.rb:153:10:153:13 | ...[...] | +| semantics.rb:154:10:154:10 | x [element] : | semantics.rb:154:10:154:13 | ...[...] | +| semantics.rb:154:10:154:10 | x [element] : | semantics.rb:154:10:154:13 | ...[...] | +| semantics.rb:158:9:158:18 | call to source : | semantics.rb:162:5:162:5 | [post] h [element 0] : | +| semantics.rb:158:9:158:18 | call to source : | semantics.rb:162:5:162:5 | [post] h [element 0] : | +| semantics.rb:159:9:159:18 | call to source : | semantics.rb:163:5:163:5 | [post] h [element] : | +| semantics.rb:159:9:159:18 | call to source : | semantics.rb:163:5:163:5 | [post] h [element] : | +| semantics.rb:162:5:162:5 | [post] h [element 0] : | semantics.rb:165:14:165:14 | h [element 0] : | +| semantics.rb:162:5:162:5 | [post] h [element 0] : | semantics.rb:165:14:165:14 | h [element 0] : | +| semantics.rb:163:5:163:5 | [post] h [element] : | semantics.rb:165:14:165:14 | h [element] : | +| semantics.rb:163:5:163:5 | [post] h [element] : | semantics.rb:165:14:165:14 | h [element] : | +| semantics.rb:165:14:165:14 | h [element 0] : | semantics.rb:165:10:165:15 | call to s21 | +| semantics.rb:165:14:165:14 | h [element 0] : | semantics.rb:165:10:165:15 | call to s21 | +| semantics.rb:165:14:165:14 | h [element] : | semantics.rb:165:10:165:15 | call to s21 | +| semantics.rb:165:14:165:14 | h [element] : | semantics.rb:165:10:165:15 | call to s21 | +| semantics.rb:169:9:169:18 | call to source : | semantics.rb:170:13:170:13 | a : | +| semantics.rb:169:9:169:18 | call to source : | semantics.rb:170:13:170:13 | a : | +| semantics.rb:170:9:170:14 | call to s22 [element] : | semantics.rb:171:10:171:10 | x [element] : | +| semantics.rb:170:9:170:14 | call to s22 [element] : | semantics.rb:171:10:171:10 | x [element] : | +| semantics.rb:170:9:170:14 | call to s22 [element] : | semantics.rb:172:10:172:10 | x [element] : | +| semantics.rb:170:9:170:14 | call to s22 [element] : | semantics.rb:172:10:172:10 | x [element] : | +| semantics.rb:170:13:170:13 | a : | semantics.rb:170:9:170:14 | call to s22 [element] : | +| semantics.rb:170:13:170:13 | a : | semantics.rb:170:9:170:14 | call to s22 [element] : | +| semantics.rb:171:10:171:10 | x [element] : | semantics.rb:171:10:171:13 | ...[...] | +| semantics.rb:171:10:171:10 | x [element] : | semantics.rb:171:10:171:13 | ...[...] | +| semantics.rb:172:10:172:10 | x [element] : | semantics.rb:172:10:172:13 | ...[...] | +| semantics.rb:172:10:172:10 | x [element] : | semantics.rb:172:10:172:13 | ...[...] | +| semantics.rb:176:9:176:18 | call to source : | semantics.rb:179:5:179:5 | [post] h [element 0] : | +| semantics.rb:176:9:176:18 | call to source : | semantics.rb:179:5:179:5 | [post] h [element 0] : | +| semantics.rb:179:5:179:5 | [post] h [element 0] : | semantics.rb:180:5:180:5 | h [element 0] : | +| semantics.rb:179:5:179:5 | [post] h [element 0] : | semantics.rb:180:5:180:5 | h [element 0] : | +| semantics.rb:180:5:180:5 | [post] h [element 0] : | semantics.rb:181:14:181:14 | h [element 0] : | +| semantics.rb:180:5:180:5 | [post] h [element 0] : | semantics.rb:181:14:181:14 | h [element 0] : | +| semantics.rb:180:5:180:5 | h [element 0] : | semantics.rb:180:5:180:5 | [post] h [element 0] : | +| semantics.rb:180:5:180:5 | h [element 0] : | semantics.rb:180:5:180:5 | [post] h [element 0] : | +| semantics.rb:181:14:181:14 | h [element 0] : | semantics.rb:181:10:181:15 | call to s23 | +| semantics.rb:181:14:181:14 | h [element 0] : | semantics.rb:181:10:181:15 | call to s23 | +| semantics.rb:185:9:185:18 | call to source : | semantics.rb:186:13:186:13 | a : | +| semantics.rb:185:9:185:18 | call to source : | semantics.rb:186:13:186:13 | a : | +| semantics.rb:186:9:186:14 | call to s24 [element 0] : | semantics.rb:187:10:187:10 | x [element 0] : | +| semantics.rb:186:9:186:14 | call to s24 [element 0] : | semantics.rb:187:10:187:10 | x [element 0] : | +| semantics.rb:186:9:186:14 | call to s24 [element 0] : | semantics.rb:189:10:189:10 | x [element 0] : | +| semantics.rb:186:9:186:14 | call to s24 [element 0] : | semantics.rb:189:10:189:10 | x [element 0] : | +| semantics.rb:186:13:186:13 | a : | semantics.rb:186:9:186:14 | call to s24 [element 0] : | +| semantics.rb:186:13:186:13 | a : | semantics.rb:186:9:186:14 | call to s24 [element 0] : | +| semantics.rb:187:10:187:10 | x [element 0] : | semantics.rb:187:10:187:13 | ...[...] | +| semantics.rb:187:10:187:10 | x [element 0] : | semantics.rb:187:10:187:13 | ...[...] | +| semantics.rb:189:10:189:10 | x [element 0] : | semantics.rb:189:10:189:13 | ...[...] | +| semantics.rb:189:10:189:10 | x [element 0] : | semantics.rb:189:10:189:13 | ...[...] | +| semantics.rb:193:9:193:18 | call to source : | semantics.rb:196:5:196:5 | [post] h [element 0] : | +| semantics.rb:193:9:193:18 | call to source : | semantics.rb:196:5:196:5 | [post] h [element 0] : | +| semantics.rb:196:5:196:5 | [post] h [element 0] : | semantics.rb:197:5:197:5 | h [element 0] : | +| semantics.rb:196:5:196:5 | [post] h [element 0] : | semantics.rb:197:5:197:5 | h [element 0] : | +| semantics.rb:197:5:197:5 | [post] h [element 0] : | semantics.rb:198:14:198:14 | h [element 0] : | +| semantics.rb:197:5:197:5 | [post] h [element 0] : | semantics.rb:198:14:198:14 | h [element 0] : | +| semantics.rb:197:5:197:5 | h [element 0] : | semantics.rb:197:5:197:5 | [post] h [element 0] : | +| semantics.rb:197:5:197:5 | h [element 0] : | semantics.rb:197:5:197:5 | [post] h [element 0] : | +| semantics.rb:198:14:198:14 | h [element 0] : | semantics.rb:198:10:198:15 | call to s25 | +| semantics.rb:198:14:198:14 | h [element 0] : | semantics.rb:198:10:198:15 | call to s25 | +| semantics.rb:202:9:202:18 | call to source : | semantics.rb:203:13:203:13 | a : | +| semantics.rb:202:9:202:18 | call to source : | semantics.rb:203:13:203:13 | a : | +| semantics.rb:203:9:203:14 | call to s26 [element 0] : | semantics.rb:204:10:204:10 | x [element 0] : | +| semantics.rb:203:9:203:14 | call to s26 [element 0] : | semantics.rb:204:10:204:10 | x [element 0] : | +| semantics.rb:203:9:203:14 | call to s26 [element 0] : | semantics.rb:206:10:206:10 | x [element 0] : | +| semantics.rb:203:9:203:14 | call to s26 [element 0] : | semantics.rb:206:10:206:10 | x [element 0] : | +| semantics.rb:203:13:203:13 | a : | semantics.rb:203:9:203:14 | call to s26 [element 0] : | +| semantics.rb:203:13:203:13 | a : | semantics.rb:203:9:203:14 | call to s26 [element 0] : | +| semantics.rb:204:10:204:10 | x [element 0] : | semantics.rb:204:10:204:13 | ...[...] | +| semantics.rb:204:10:204:10 | x [element 0] : | semantics.rb:204:10:204:13 | ...[...] | +| semantics.rb:206:10:206:10 | x [element 0] : | semantics.rb:206:10:206:13 | ...[...] | +| semantics.rb:206:10:206:10 | x [element 0] : | semantics.rb:206:10:206:13 | ...[...] | +| semantics.rb:211:9:211:18 | call to source : | semantics.rb:217:5:217:5 | [post] h [element 1] : | +| semantics.rb:211:9:211:18 | call to source : | semantics.rb:217:5:217:5 | [post] h [element 1] : | +| semantics.rb:212:9:212:18 | call to source : | semantics.rb:218:5:218:5 | [post] h [element 2] : | +| semantics.rb:212:9:212:18 | call to source : | semantics.rb:218:5:218:5 | [post] h [element 2] : | +| semantics.rb:213:9:213:18 | call to source : | semantics.rb:219:5:219:5 | [post] h [element] : | +| semantics.rb:213:9:213:18 | call to source : | semantics.rb:219:5:219:5 | [post] h [element] : | +| semantics.rb:217:5:217:5 | [post] h [element 1] : | semantics.rb:218:5:218:5 | h [element 1] : | +| semantics.rb:217:5:217:5 | [post] h [element 1] : | semantics.rb:218:5:218:5 | h [element 1] : | +| semantics.rb:218:5:218:5 | [post] h [element 1] : | semantics.rb:221:14:221:14 | h [element 1] : | +| semantics.rb:218:5:218:5 | [post] h [element 1] : | semantics.rb:221:14:221:14 | h [element 1] : | +| semantics.rb:218:5:218:5 | [post] h [element 2] : | semantics.rb:221:14:221:14 | h [element 2] : | +| semantics.rb:218:5:218:5 | [post] h [element 2] : | semantics.rb:221:14:221:14 | h [element 2] : | +| semantics.rb:218:5:218:5 | h [element 1] : | semantics.rb:218:5:218:5 | [post] h [element 1] : | +| semantics.rb:218:5:218:5 | h [element 1] : | semantics.rb:218:5:218:5 | [post] h [element 1] : | +| semantics.rb:219:5:219:5 | [post] h [element] : | semantics.rb:221:14:221:14 | h [element] : | +| semantics.rb:219:5:219:5 | [post] h [element] : | semantics.rb:221:14:221:14 | h [element] : | +| semantics.rb:221:14:221:14 | h [element 1] : | semantics.rb:221:10:221:15 | call to s27 | +| semantics.rb:221:14:221:14 | h [element 1] : | semantics.rb:221:10:221:15 | call to s27 | +| semantics.rb:221:14:221:14 | h [element 2] : | semantics.rb:221:10:221:15 | call to s27 | +| semantics.rb:221:14:221:14 | h [element 2] : | semantics.rb:221:10:221:15 | call to s27 | +| semantics.rb:221:14:221:14 | h [element] : | semantics.rb:221:10:221:15 | call to s27 | +| semantics.rb:221:14:221:14 | h [element] : | semantics.rb:221:10:221:15 | call to s27 | +| semantics.rb:235:9:235:18 | call to source : | semantics.rb:240:5:240:5 | [post] h [element 1] : | +| semantics.rb:235:9:235:18 | call to source : | semantics.rb:240:5:240:5 | [post] h [element 1] : | +| semantics.rb:236:9:236:18 | call to source : | semantics.rb:241:5:241:5 | [post] h [element 2] : | +| semantics.rb:236:9:236:18 | call to source : | semantics.rb:241:5:241:5 | [post] h [element 2] : | +| semantics.rb:240:5:240:5 | [post] h [element 1] : | semantics.rb:241:5:241:5 | h [element 1] : | +| semantics.rb:240:5:240:5 | [post] h [element 1] : | semantics.rb:241:5:241:5 | h [element 1] : | +| semantics.rb:241:5:241:5 | [post] h [element 1] : | semantics.rb:244:14:244:14 | h [element 1] : | +| semantics.rb:241:5:241:5 | [post] h [element 1] : | semantics.rb:244:14:244:14 | h [element 1] : | +| semantics.rb:241:5:241:5 | [post] h [element 2] : | semantics.rb:244:14:244:14 | h [element 2] : | +| semantics.rb:241:5:241:5 | [post] h [element 2] : | semantics.rb:244:14:244:14 | h [element 2] : | +| semantics.rb:241:5:241:5 | h [element 1] : | semantics.rb:241:5:241:5 | [post] h [element 1] : | +| semantics.rb:241:5:241:5 | h [element 1] : | semantics.rb:241:5:241:5 | [post] h [element 1] : | +| semantics.rb:244:14:244:14 | h [element 1] : | semantics.rb:244:10:244:15 | call to s29 | +| semantics.rb:244:14:244:14 | h [element 1] : | semantics.rb:244:10:244:15 | call to s29 | +| semantics.rb:244:14:244:14 | h [element 2] : | semantics.rb:244:10:244:15 | call to s29 | +| semantics.rb:244:14:244:14 | h [element 2] : | semantics.rb:244:10:244:15 | call to s29 | +| semantics.rb:248:9:248:18 | call to source : | semantics.rb:249:13:249:13 | a : | +| semantics.rb:248:9:248:18 | call to source : | semantics.rb:249:13:249:13 | a : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:250:10:250:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:250:10:250:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:251:10:251:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:251:10:251:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:252:10:252:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:252:10:252:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:253:10:253:10 | x [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semantics.rb:253:10:253:10 | x [element] : | +| semantics.rb:249:13:249:13 | a : | semantics.rb:249:9:249:14 | call to s30 [element] : | +| semantics.rb:249:13:249:13 | a : | semantics.rb:249:9:249:14 | call to s30 [element] : | +| semantics.rb:250:10:250:10 | x [element] : | semantics.rb:250:10:250:13 | ...[...] | +| semantics.rb:250:10:250:10 | x [element] : | semantics.rb:250:10:250:13 | ...[...] | +| semantics.rb:251:10:251:10 | x [element] : | semantics.rb:251:10:251:13 | ...[...] | +| semantics.rb:251:10:251:10 | x [element] : | semantics.rb:251:10:251:13 | ...[...] | +| semantics.rb:252:10:252:10 | x [element] : | semantics.rb:252:10:252:13 | ...[...] | +| semantics.rb:252:10:252:10 | x [element] : | semantics.rb:252:10:252:13 | ...[...] | +| semantics.rb:253:10:253:10 | x [element] : | semantics.rb:253:10:253:13 | ...[...] | +| semantics.rb:253:10:253:10 | x [element] : | semantics.rb:253:10:253:13 | ...[...] | +| semantics.rb:257:5:257:5 | [post] h [element :foo] : | semantics.rb:258:5:258:5 | h [element :foo] : | +| semantics.rb:257:5:257:5 | [post] h [element :foo] : | semantics.rb:258:5:258:5 | h [element :foo] : | +| semantics.rb:257:15:257:25 | call to source : | semantics.rb:257:5:257:5 | [post] h [element :foo] : | +| semantics.rb:257:15:257:25 | call to source : | semantics.rb:257:5:257:5 | [post] h [element :foo] : | +| semantics.rb:258:5:258:5 | [post] h [element :foo] : | semantics.rb:259:5:259:5 | h [element :foo] : | +| semantics.rb:258:5:258:5 | [post] h [element :foo] : | semantics.rb:259:5:259:5 | h [element :foo] : | +| semantics.rb:258:5:258:5 | h [element :foo] : | semantics.rb:258:5:258:5 | [post] h [element :foo] : | +| semantics.rb:258:5:258:5 | h [element :foo] : | semantics.rb:258:5:258:5 | [post] h [element :foo] : | +| semantics.rb:259:5:259:5 | [post] h [element :foo] : | semantics.rb:262:14:262:14 | h [element :foo] : | +| semantics.rb:259:5:259:5 | [post] h [element :foo] : | semantics.rb:262:14:262:14 | h [element :foo] : | +| semantics.rb:259:5:259:5 | h [element :foo] : | semantics.rb:259:5:259:5 | [post] h [element :foo] : | +| semantics.rb:259:5:259:5 | h [element :foo] : | semantics.rb:259:5:259:5 | [post] h [element :foo] : | +| semantics.rb:260:5:260:5 | [post] h [element] : | semantics.rb:262:14:262:14 | h [element] : | +| semantics.rb:260:5:260:5 | [post] h [element] : | semantics.rb:262:14:262:14 | h [element] : | +| semantics.rb:260:12:260:22 | call to source : | semantics.rb:260:5:260:5 | [post] h [element] : | +| semantics.rb:260:12:260:22 | call to source : | semantics.rb:260:5:260:5 | [post] h [element] : | +| semantics.rb:262:14:262:14 | h [element :foo] : | semantics.rb:262:10:262:15 | call to s31 | +| semantics.rb:262:14:262:14 | h [element :foo] : | semantics.rb:262:10:262:15 | call to s31 | +| semantics.rb:262:14:262:14 | h [element] : | semantics.rb:262:10:262:15 | call to s31 | +| semantics.rb:262:14:262:14 | h [element] : | semantics.rb:262:10:262:15 | call to s31 | +| semantics.rb:267:5:267:5 | [post] h [element foo] : | semantics.rb:268:5:268:5 | h [element foo] : | +| semantics.rb:267:5:267:5 | [post] h [element foo] : | semantics.rb:268:5:268:5 | h [element foo] : | +| semantics.rb:267:16:267:26 | call to source : | semantics.rb:267:5:267:5 | [post] h [element foo] : | +| semantics.rb:267:16:267:26 | call to source : | semantics.rb:267:5:267:5 | [post] h [element foo] : | +| semantics.rb:268:5:268:5 | [post] h [element foo] : | semantics.rb:269:5:269:5 | h [element foo] : | +| semantics.rb:268:5:268:5 | [post] h [element foo] : | semantics.rb:269:5:269:5 | h [element foo] : | +| semantics.rb:268:5:268:5 | h [element foo] : | semantics.rb:268:5:268:5 | [post] h [element foo] : | +| semantics.rb:268:5:268:5 | h [element foo] : | semantics.rb:268:5:268:5 | [post] h [element foo] : | +| semantics.rb:269:5:269:5 | [post] h [element foo] : | semantics.rb:272:14:272:14 | h [element foo] : | +| semantics.rb:269:5:269:5 | [post] h [element foo] : | semantics.rb:272:14:272:14 | h [element foo] : | +| semantics.rb:269:5:269:5 | h [element foo] : | semantics.rb:269:5:269:5 | [post] h [element foo] : | +| semantics.rb:269:5:269:5 | h [element foo] : | semantics.rb:269:5:269:5 | [post] h [element foo] : | +| semantics.rb:270:5:270:5 | [post] h [element] : | semantics.rb:272:14:272:14 | h [element] : | +| semantics.rb:270:5:270:5 | [post] h [element] : | semantics.rb:272:14:272:14 | h [element] : | +| semantics.rb:270:12:270:22 | call to source : | semantics.rb:270:5:270:5 | [post] h [element] : | +| semantics.rb:270:12:270:22 | call to source : | semantics.rb:270:5:270:5 | [post] h [element] : | +| semantics.rb:272:14:272:14 | h [element foo] : | semantics.rb:272:10:272:15 | call to s32 | +| semantics.rb:272:14:272:14 | h [element foo] : | semantics.rb:272:10:272:15 | call to s32 | +| semantics.rb:272:14:272:14 | h [element] : | semantics.rb:272:10:272:15 | call to s32 | +| semantics.rb:272:14:272:14 | h [element] : | semantics.rb:272:10:272:15 | call to s32 | +| semantics.rb:280:5:280:5 | [post] h [element] : | semantics.rb:281:5:281:5 | h [element] : | +| semantics.rb:280:5:280:5 | [post] h [element] : | semantics.rb:281:5:281:5 | h [element] : | +| semantics.rb:280:12:280:22 | call to source : | semantics.rb:280:5:280:5 | [post] h [element] : | +| semantics.rb:280:12:280:22 | call to source : | semantics.rb:280:5:280:5 | [post] h [element] : | +| semantics.rb:281:5:281:5 | [post] h [element nil] : | semantics.rb:282:5:282:5 | h [element nil] : | +| semantics.rb:281:5:281:5 | [post] h [element nil] : | semantics.rb:282:5:282:5 | h [element nil] : | +| semantics.rb:281:5:281:5 | [post] h [element] : | semantics.rb:282:5:282:5 | h [element] : | +| semantics.rb:281:5:281:5 | [post] h [element] : | semantics.rb:282:5:282:5 | h [element] : | +| semantics.rb:281:5:281:5 | h [element] : | semantics.rb:281:5:281:5 | [post] h [element] : | +| semantics.rb:281:5:281:5 | h [element] : | semantics.rb:281:5:281:5 | [post] h [element] : | +| semantics.rb:281:14:281:24 | call to source : | semantics.rb:281:5:281:5 | [post] h [element nil] : | +| semantics.rb:281:14:281:24 | call to source : | semantics.rb:281:5:281:5 | [post] h [element nil] : | +| semantics.rb:282:5:282:5 | [post] h [element nil] : | semantics.rb:283:5:283:5 | h [element nil] : | +| semantics.rb:282:5:282:5 | [post] h [element nil] : | semantics.rb:283:5:283:5 | h [element nil] : | +| semantics.rb:282:5:282:5 | [post] h [element true] : | semantics.rb:283:5:283:5 | h [element true] : | +| semantics.rb:282:5:282:5 | [post] h [element true] : | semantics.rb:283:5:283:5 | h [element true] : | +| semantics.rb:282:5:282:5 | [post] h [element] : | semantics.rb:283:5:283:5 | h [element] : | +| semantics.rb:282:5:282:5 | [post] h [element] : | semantics.rb:283:5:283:5 | h [element] : | +| semantics.rb:282:5:282:5 | h [element nil] : | semantics.rb:282:5:282:5 | [post] h [element nil] : | +| semantics.rb:282:5:282:5 | h [element nil] : | semantics.rb:282:5:282:5 | [post] h [element nil] : | +| semantics.rb:282:5:282:5 | h [element] : | semantics.rb:282:5:282:5 | [post] h [element] : | +| semantics.rb:282:5:282:5 | h [element] : | semantics.rb:282:5:282:5 | [post] h [element] : | +| semantics.rb:282:15:282:25 | call to source : | semantics.rb:282:5:282:5 | [post] h [element true] : | +| semantics.rb:282:15:282:25 | call to source : | semantics.rb:282:5:282:5 | [post] h [element true] : | +| semantics.rb:283:5:283:5 | [post] h [element false] : | semantics.rb:285:14:285:14 | h [element false] : | +| semantics.rb:283:5:283:5 | [post] h [element false] : | semantics.rb:285:14:285:14 | h [element false] : | +| semantics.rb:283:5:283:5 | [post] h [element nil] : | semantics.rb:285:14:285:14 | h [element nil] : | +| semantics.rb:283:5:283:5 | [post] h [element nil] : | semantics.rb:285:14:285:14 | h [element nil] : | +| semantics.rb:283:5:283:5 | [post] h [element true] : | semantics.rb:285:14:285:14 | h [element true] : | +| semantics.rb:283:5:283:5 | [post] h [element true] : | semantics.rb:285:14:285:14 | h [element true] : | +| semantics.rb:283:5:283:5 | [post] h [element] : | semantics.rb:285:14:285:14 | h [element] : | +| semantics.rb:283:5:283:5 | [post] h [element] : | semantics.rb:285:14:285:14 | h [element] : | +| semantics.rb:283:5:283:5 | h [element nil] : | semantics.rb:283:5:283:5 | [post] h [element nil] : | +| semantics.rb:283:5:283:5 | h [element nil] : | semantics.rb:283:5:283:5 | [post] h [element nil] : | +| semantics.rb:283:5:283:5 | h [element true] : | semantics.rb:283:5:283:5 | [post] h [element true] : | +| semantics.rb:283:5:283:5 | h [element true] : | semantics.rb:283:5:283:5 | [post] h [element true] : | +| semantics.rb:283:5:283:5 | h [element] : | semantics.rb:283:5:283:5 | [post] h [element] : | +| semantics.rb:283:5:283:5 | h [element] : | semantics.rb:283:5:283:5 | [post] h [element] : | +| semantics.rb:283:16:283:26 | call to source : | semantics.rb:283:5:283:5 | [post] h [element false] : | +| semantics.rb:283:16:283:26 | call to source : | semantics.rb:283:5:283:5 | [post] h [element false] : | +| semantics.rb:285:14:285:14 | h [element false] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element false] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element nil] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element nil] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element true] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element true] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:285:14:285:14 | h [element] : | semantics.rb:285:10:285:15 | call to s33 | +| semantics.rb:289:9:289:24 | call to s35 [element :foo] : | semantics.rb:290:10:290:10 | x [element :foo] : | +| semantics.rb:289:9:289:24 | call to s35 [element :foo] : | semantics.rb:290:10:290:10 | x [element :foo] : | +| semantics.rb:289:9:289:24 | call to s35 [element :foo] : | semantics.rb:292:10:292:10 | x [element :foo] : | +| semantics.rb:289:9:289:24 | call to s35 [element :foo] : | semantics.rb:292:10:292:10 | x [element :foo] : | +| semantics.rb:289:13:289:23 | call to source : | semantics.rb:289:9:289:24 | call to s35 [element :foo] : | +| semantics.rb:289:13:289:23 | call to source : | semantics.rb:289:9:289:24 | call to s35 [element :foo] : | +| semantics.rb:290:10:290:10 | x [element :foo] : | semantics.rb:290:10:290:16 | ...[...] | +| semantics.rb:290:10:290:10 | x [element :foo] : | semantics.rb:290:10:290:16 | ...[...] | +| semantics.rb:292:10:292:10 | x [element :foo] : | semantics.rb:292:10:292:13 | ...[...] | +| semantics.rb:292:10:292:10 | x [element :foo] : | semantics.rb:292:10:292:13 | ...[...] | +| semantics.rb:296:9:296:24 | call to s36 [element foo] : | semantics.rb:298:10:298:10 | x [element foo] : | +| semantics.rb:296:9:296:24 | call to s36 [element foo] : | semantics.rb:298:10:298:10 | x [element foo] : | +| semantics.rb:296:9:296:24 | call to s36 [element foo] : | semantics.rb:300:10:300:10 | x [element foo] : | +| semantics.rb:296:9:296:24 | call to s36 [element foo] : | semantics.rb:300:10:300:10 | x [element foo] : | +| semantics.rb:296:13:296:23 | call to source : | semantics.rb:296:9:296:24 | call to s36 [element foo] : | +| semantics.rb:296:13:296:23 | call to source : | semantics.rb:296:9:296:24 | call to s36 [element foo] : | +| semantics.rb:298:10:298:10 | x [element foo] : | semantics.rb:298:10:298:17 | ...[...] | +| semantics.rb:298:10:298:10 | x [element foo] : | semantics.rb:298:10:298:17 | ...[...] | +| semantics.rb:300:10:300:10 | x [element foo] : | semantics.rb:300:10:300:13 | ...[...] | +| semantics.rb:300:10:300:10 | x [element foo] : | semantics.rb:300:10:300:13 | ...[...] | +| semantics.rb:304:9:304:24 | call to s37 [element true] : | semantics.rb:306:10:306:10 | x [element true] : | +| semantics.rb:304:9:304:24 | call to s37 [element true] : | semantics.rb:306:10:306:10 | x [element true] : | +| semantics.rb:304:9:304:24 | call to s37 [element true] : | semantics.rb:308:10:308:10 | x [element true] : | +| semantics.rb:304:9:304:24 | call to s37 [element true] : | semantics.rb:308:10:308:10 | x [element true] : | +| semantics.rb:304:13:304:23 | call to source : | semantics.rb:304:9:304:24 | call to s37 [element true] : | +| semantics.rb:304:13:304:23 | call to source : | semantics.rb:304:9:304:24 | call to s37 [element true] : | +| semantics.rb:306:10:306:10 | x [element true] : | semantics.rb:306:10:306:16 | ...[...] | +| semantics.rb:306:10:306:10 | x [element true] : | semantics.rb:306:10:306:16 | ...[...] | +| semantics.rb:308:10:308:10 | x [element true] : | semantics.rb:308:10:308:13 | ...[...] | +| semantics.rb:308:10:308:10 | x [element true] : | semantics.rb:308:10:308:13 | ...[...] | +| semantics.rb:312:5:312:5 | [post] h [element foo] : | semantics.rb:315:14:315:14 | h [element foo] : | +| semantics.rb:312:5:312:5 | [post] h [element foo] : | semantics.rb:315:14:315:14 | h [element foo] : | +| semantics.rb:312:16:312:26 | call to source : | semantics.rb:312:5:312:5 | [post] h [element foo] : | +| semantics.rb:312:16:312:26 | call to source : | semantics.rb:312:5:312:5 | [post] h [element foo] : | +| semantics.rb:315:14:315:14 | h [element foo] : | semantics.rb:315:10:315:15 | call to s38 | +| semantics.rb:315:14:315:14 | h [element foo] : | semantics.rb:315:10:315:15 | call to s38 | +| semantics.rb:319:9:319:24 | call to s39 [element :foo] : | semantics.rb:321:10:321:10 | x [element :foo] : | +| semantics.rb:319:9:319:24 | call to s39 [element :foo] : | semantics.rb:321:10:321:10 | x [element :foo] : | +| semantics.rb:319:9:319:24 | call to s39 [element :foo] : | semantics.rb:322:10:322:10 | x [element :foo] : | +| semantics.rb:319:9:319:24 | call to s39 [element :foo] : | semantics.rb:322:10:322:10 | x [element :foo] : | +| semantics.rb:319:13:319:23 | call to source : | semantics.rb:319:9:319:24 | call to s39 [element :foo] : | +| semantics.rb:319:13:319:23 | call to source : | semantics.rb:319:9:319:24 | call to s39 [element :foo] : | +| semantics.rb:321:10:321:10 | x [element :foo] : | semantics.rb:321:10:321:16 | ...[...] | +| semantics.rb:321:10:321:10 | x [element :foo] : | semantics.rb:321:10:321:16 | ...[...] | +| semantics.rb:322:10:322:10 | x [element :foo] : | semantics.rb:322:10:322:13 | ...[...] | +| semantics.rb:322:10:322:10 | x [element :foo] : | semantics.rb:322:10:322:13 | ...[...] | +| semantics.rb:327:5:327:5 | [post] x [@foo] : | semantics.rb:329:14:329:14 | x [@foo] : | +| semantics.rb:327:5:327:5 | [post] x [@foo] : | semantics.rb:329:14:329:14 | x [@foo] : | +| semantics.rb:327:13:327:23 | call to source : | semantics.rb:327:5:327:5 | [post] x [@foo] : | +| semantics.rb:327:13:327:23 | call to source : | semantics.rb:327:5:327:5 | [post] x [@foo] : | +| semantics.rb:329:14:329:14 | x [@foo] : | semantics.rb:329:10:329:15 | call to s40 | +| semantics.rb:329:14:329:14 | x [@foo] : | semantics.rb:329:10:329:15 | call to s40 | +| semantics.rb:333:9:333:24 | call to s41 [@foo] : | semantics.rb:334:10:334:10 | x [@foo] : | +| semantics.rb:333:9:333:24 | call to s41 [@foo] : | semantics.rb:334:10:334:10 | x [@foo] : | +| semantics.rb:333:13:333:23 | call to source : | semantics.rb:333:9:333:24 | call to s41 [@foo] : | +| semantics.rb:333:13:333:23 | call to source : | semantics.rb:333:9:333:24 | call to s41 [@foo] : | +| semantics.rb:334:10:334:10 | x [@foo] : | semantics.rb:334:10:334:14 | call to foo | +| semantics.rb:334:10:334:10 | x [@foo] : | semantics.rb:334:10:334:14 | call to foo | +| semantics.rb:339:5:339:5 | [post] h [element 0] : | semantics.rb:342:13:342:13 | h [element 0] : | +| semantics.rb:339:5:339:5 | [post] h [element 0] : | semantics.rb:342:13:342:13 | h [element 0] : | +| semantics.rb:339:12:339:22 | call to source : | semantics.rb:339:5:339:5 | [post] h [element 0] : | +| semantics.rb:339:12:339:22 | call to source : | semantics.rb:339:5:339:5 | [post] h [element 0] : | +| semantics.rb:340:5:340:5 | [post] h [element] : | semantics.rb:342:13:342:13 | h [element] : | +| semantics.rb:340:5:340:5 | [post] h [element] : | semantics.rb:342:13:342:13 | h [element] : | +| semantics.rb:340:12:340:22 | call to source : | semantics.rb:340:5:340:5 | [post] h [element] : | +| semantics.rb:340:12:340:22 | call to source : | semantics.rb:340:5:340:5 | [post] h [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element 0] : | semantics.rb:344:10:344:10 | x [element 0] : | +| semantics.rb:342:9:342:14 | call to s42 [element 0] : | semantics.rb:344:10:344:10 | x [element 0] : | +| semantics.rb:342:9:342:14 | call to s42 [element 0] : | semantics.rb:346:10:346:10 | x [element 0] : | +| semantics.rb:342:9:342:14 | call to s42 [element 0] : | semantics.rb:346:10:346:10 | x [element 0] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semantics.rb:344:10:344:10 | x [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semantics.rb:344:10:344:10 | x [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semantics.rb:345:10:345:10 | x [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semantics.rb:345:10:345:10 | x [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semantics.rb:346:10:346:10 | x [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semantics.rb:346:10:346:10 | x [element] : | +| semantics.rb:342:13:342:13 | h [element 0] : | semantics.rb:342:9:342:14 | call to s42 [element 0] : | +| semantics.rb:342:13:342:13 | h [element 0] : | semantics.rb:342:9:342:14 | call to s42 [element 0] : | +| semantics.rb:342:13:342:13 | h [element] : | semantics.rb:342:9:342:14 | call to s42 [element] : | +| semantics.rb:342:13:342:13 | h [element] : | semantics.rb:342:9:342:14 | call to s42 [element] : | +| semantics.rb:344:10:344:10 | x [element 0] : | semantics.rb:344:10:344:13 | ...[...] | +| semantics.rb:344:10:344:10 | x [element 0] : | semantics.rb:344:10:344:13 | ...[...] | +| semantics.rb:344:10:344:10 | x [element] : | semantics.rb:344:10:344:13 | ...[...] | +| semantics.rb:344:10:344:10 | x [element] : | semantics.rb:344:10:344:13 | ...[...] | +| semantics.rb:345:10:345:10 | x [element] : | semantics.rb:345:10:345:13 | ...[...] | +| semantics.rb:345:10:345:10 | x [element] : | semantics.rb:345:10:345:13 | ...[...] | +| semantics.rb:346:10:346:10 | x [element 0] : | semantics.rb:346:10:346:13 | ...[...] | +| semantics.rb:346:10:346:10 | x [element 0] : | semantics.rb:346:10:346:13 | ...[...] | +| semantics.rb:346:10:346:10 | x [element] : | semantics.rb:346:10:346:13 | ...[...] | +| semantics.rb:346:10:346:10 | x [element] : | semantics.rb:346:10:346:13 | ...[...] | +| semantics.rb:350:5:350:5 | [post] h [element 0] : | semantics.rb:353:13:353:13 | h [element 0] : | +| semantics.rb:350:5:350:5 | [post] h [element 0] : | semantics.rb:353:13:353:13 | h [element 0] : | +| semantics.rb:350:12:350:22 | call to source : | semantics.rb:350:5:350:5 | [post] h [element 0] : | +| semantics.rb:350:12:350:22 | call to source : | semantics.rb:350:5:350:5 | [post] h [element 0] : | +| semantics.rb:353:9:353:14 | call to s43 [element 0] : | semantics.rb:355:10:355:10 | x [element 0] : | +| semantics.rb:353:9:353:14 | call to s43 [element 0] : | semantics.rb:355:10:355:10 | x [element 0] : | +| semantics.rb:353:9:353:14 | call to s43 [element 0] : | semantics.rb:357:10:357:10 | x [element 0] : | +| semantics.rb:353:9:353:14 | call to s43 [element 0] : | semantics.rb:357:10:357:10 | x [element 0] : | +| semantics.rb:353:13:353:13 | h [element 0] : | semantics.rb:353:9:353:14 | call to s43 [element 0] : | +| semantics.rb:353:13:353:13 | h [element 0] : | semantics.rb:353:9:353:14 | call to s43 [element 0] : | +| semantics.rb:355:10:355:10 | x [element 0] : | semantics.rb:355:10:355:13 | ...[...] | +| semantics.rb:355:10:355:10 | x [element 0] : | semantics.rb:355:10:355:13 | ...[...] | +| semantics.rb:357:10:357:10 | x [element 0] : | semantics.rb:357:10:357:13 | ...[...] | +| semantics.rb:357:10:357:10 | x [element 0] : | semantics.rb:357:10:357:13 | ...[...] | +| semantics.rb:362:5:362:5 | [post] h [element 1] : | semantics.rb:365:9:365:9 | h [element 1] : | +| semantics.rb:362:5:362:5 | [post] h [element 1] : | semantics.rb:365:9:365:9 | h [element 1] : | +| semantics.rb:362:12:362:22 | call to source : | semantics.rb:362:5:362:5 | [post] h [element 1] : | +| semantics.rb:362:12:362:22 | call to source : | semantics.rb:362:5:362:5 | [post] h [element 1] : | +| semantics.rb:365:9:365:9 | [post] h [element 1] : | semantics.rb:368:10:368:10 | h [element 1] : | +| semantics.rb:365:9:365:9 | [post] h [element 1] : | semantics.rb:368:10:368:10 | h [element 1] : | +| semantics.rb:365:9:365:9 | [post] h [element 1] : | semantics.rb:369:10:369:10 | h [element 1] : | +| semantics.rb:365:9:365:9 | [post] h [element 1] : | semantics.rb:369:10:369:10 | h [element 1] : | +| semantics.rb:365:9:365:9 | h [element 1] : | semantics.rb:365:9:365:9 | [post] h [element 1] : | +| semantics.rb:365:9:365:9 | h [element 1] : | semantics.rb:365:9:365:9 | [post] h [element 1] : | +| semantics.rb:368:10:368:10 | h [element 1] : | semantics.rb:368:10:368:13 | ...[...] | +| semantics.rb:368:10:368:10 | h [element 1] : | semantics.rb:368:10:368:13 | ...[...] | +| semantics.rb:369:10:369:10 | h [element 1] : | semantics.rb:369:10:369:13 | ...[...] | +| semantics.rb:369:10:369:10 | h [element 1] : | semantics.rb:369:10:369:13 | ...[...] | +| semantics.rb:373:5:373:5 | [post] h [element 0] : | semantics.rb:374:5:374:5 | h [element 0] : | +| semantics.rb:373:5:373:5 | [post] h [element 0] : | semantics.rb:374:5:374:5 | h [element 0] : | +| semantics.rb:373:12:373:22 | call to source : | semantics.rb:373:5:373:5 | [post] h [element 0] : | +| semantics.rb:373:12:373:22 | call to source : | semantics.rb:373:5:373:5 | [post] h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 0] : | semantics.rb:377:10:377:10 | h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 0] : | semantics.rb:377:10:377:10 | h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 0] : | semantics.rb:379:10:379:10 | h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 0] : | semantics.rb:379:10:379:10 | h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semantics.rb:378:10:378:10 | h [element 1] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semantics.rb:378:10:378:10 | h [element 1] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semantics.rb:379:10:379:10 | h [element 1] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semantics.rb:379:10:379:10 | h [element 1] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semantics.rb:381:9:381:9 | h [element 1] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semantics.rb:381:9:381:9 | h [element 1] : | +| semantics.rb:374:5:374:5 | h [element 0] : | semantics.rb:374:5:374:5 | [post] h [element 0] : | +| semantics.rb:374:5:374:5 | h [element 0] : | semantics.rb:374:5:374:5 | [post] h [element 0] : | +| semantics.rb:374:12:374:22 | call to source : | semantics.rb:374:5:374:5 | [post] h [element 1] : | +| semantics.rb:374:12:374:22 | call to source : | semantics.rb:374:5:374:5 | [post] h [element 1] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:377:10:377:10 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:377:10:377:10 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:378:10:378:10 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:378:10:378:10 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:379:10:379:10 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:379:10:379:10 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:381:9:381:9 | h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semantics.rb:381:9:381:9 | h [element] : | +| semantics.rb:375:12:375:22 | call to source : | semantics.rb:375:5:375:5 | [post] h [element] : | +| semantics.rb:375:12:375:22 | call to source : | semantics.rb:375:5:375:5 | [post] h [element] : | +| semantics.rb:377:10:377:10 | h [element 0] : | semantics.rb:377:10:377:13 | ...[...] | +| semantics.rb:377:10:377:10 | h [element 0] : | semantics.rb:377:10:377:13 | ...[...] | +| semantics.rb:377:10:377:10 | h [element] : | semantics.rb:377:10:377:13 | ...[...] | +| semantics.rb:377:10:377:10 | h [element] : | semantics.rb:377:10:377:13 | ...[...] | +| semantics.rb:378:10:378:10 | h [element 1] : | semantics.rb:378:10:378:13 | ...[...] | +| semantics.rb:378:10:378:10 | h [element 1] : | semantics.rb:378:10:378:13 | ...[...] | +| semantics.rb:378:10:378:10 | h [element] : | semantics.rb:378:10:378:13 | ...[...] | +| semantics.rb:378:10:378:10 | h [element] : | semantics.rb:378:10:378:13 | ...[...] | +| semantics.rb:379:10:379:10 | h [element 0] : | semantics.rb:379:10:379:13 | ...[...] | +| semantics.rb:379:10:379:10 | h [element 0] : | semantics.rb:379:10:379:13 | ...[...] | +| semantics.rb:379:10:379:10 | h [element 1] : | semantics.rb:379:10:379:13 | ...[...] | +| semantics.rb:379:10:379:10 | h [element 1] : | semantics.rb:379:10:379:13 | ...[...] | +| semantics.rb:379:10:379:10 | h [element] : | semantics.rb:379:10:379:13 | ...[...] | +| semantics.rb:379:10:379:10 | h [element] : | semantics.rb:379:10:379:13 | ...[...] | +| semantics.rb:381:9:381:9 | [post] h [element 1] : | semantics.rb:384:10:384:10 | h [element 1] : | +| semantics.rb:381:9:381:9 | [post] h [element 1] : | semantics.rb:384:10:384:10 | h [element 1] : | +| semantics.rb:381:9:381:9 | [post] h [element 1] : | semantics.rb:385:10:385:10 | h [element 1] : | +| semantics.rb:381:9:381:9 | [post] h [element 1] : | semantics.rb:385:10:385:10 | h [element 1] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semantics.rb:383:10:383:10 | h [element] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semantics.rb:383:10:383:10 | h [element] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semantics.rb:384:10:384:10 | h [element] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semantics.rb:384:10:384:10 | h [element] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semantics.rb:385:10:385:10 | h [element] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semantics.rb:385:10:385:10 | h [element] : | +| semantics.rb:381:9:381:9 | h [element 1] : | semantics.rb:381:9:381:9 | [post] h [element 1] : | +| semantics.rb:381:9:381:9 | h [element 1] : | semantics.rb:381:9:381:9 | [post] h [element 1] : | +| semantics.rb:381:9:381:9 | h [element] : | semantics.rb:381:9:381:9 | [post] h [element] : | +| semantics.rb:381:9:381:9 | h [element] : | semantics.rb:381:9:381:9 | [post] h [element] : | +| semantics.rb:383:10:383:10 | h [element] : | semantics.rb:383:10:383:13 | ...[...] | +| semantics.rb:383:10:383:10 | h [element] : | semantics.rb:383:10:383:13 | ...[...] | +| semantics.rb:384:10:384:10 | h [element 1] : | semantics.rb:384:10:384:13 | ...[...] | +| semantics.rb:384:10:384:10 | h [element 1] : | semantics.rb:384:10:384:13 | ...[...] | +| semantics.rb:384:10:384:10 | h [element] : | semantics.rb:384:10:384:13 | ...[...] | +| semantics.rb:384:10:384:10 | h [element] : | semantics.rb:384:10:384:13 | ...[...] | +| semantics.rb:385:10:385:10 | h [element 1] : | semantics.rb:385:10:385:13 | ...[...] | +| semantics.rb:385:10:385:10 | h [element 1] : | semantics.rb:385:10:385:13 | ...[...] | +| semantics.rb:385:10:385:10 | h [element] : | semantics.rb:385:10:385:13 | ...[...] | +| semantics.rb:385:10:385:10 | h [element] : | semantics.rb:385:10:385:13 | ...[...] | +| semantics.rb:389:5:389:5 | [post] h [element 0] : | semantics.rb:390:5:390:5 | h [element 0] : | +| semantics.rb:389:5:389:5 | [post] h [element 0] : | semantics.rb:390:5:390:5 | h [element 0] : | +| semantics.rb:389:12:389:22 | call to source : | semantics.rb:389:5:389:5 | [post] h [element 0] : | +| semantics.rb:389:12:389:22 | call to source : | semantics.rb:389:5:389:5 | [post] h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 0] : | semantics.rb:393:10:393:10 | h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 0] : | semantics.rb:393:10:393:10 | h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 0] : | semantics.rb:395:10:395:10 | h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 0] : | semantics.rb:395:10:395:10 | h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semantics.rb:394:10:394:10 | h [element 1] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semantics.rb:394:10:394:10 | h [element 1] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semantics.rb:395:10:395:10 | h [element 1] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semantics.rb:395:10:395:10 | h [element 1] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semantics.rb:397:13:397:13 | h [element 1] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semantics.rb:397:13:397:13 | h [element 1] : | +| semantics.rb:390:5:390:5 | h [element 0] : | semantics.rb:390:5:390:5 | [post] h [element 0] : | +| semantics.rb:390:5:390:5 | h [element 0] : | semantics.rb:390:5:390:5 | [post] h [element 0] : | +| semantics.rb:390:12:390:22 | call to source : | semantics.rb:390:5:390:5 | [post] h [element 1] : | +| semantics.rb:390:12:390:22 | call to source : | semantics.rb:390:5:390:5 | [post] h [element 1] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semantics.rb:393:10:393:10 | h [element] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semantics.rb:393:10:393:10 | h [element] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semantics.rb:394:10:394:10 | h [element] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semantics.rb:394:10:394:10 | h [element] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semantics.rb:395:10:395:10 | h [element] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semantics.rb:395:10:395:10 | h [element] : | +| semantics.rb:391:12:391:22 | call to source : | semantics.rb:391:5:391:5 | [post] h [element] : | +| semantics.rb:391:12:391:22 | call to source : | semantics.rb:391:5:391:5 | [post] h [element] : | +| semantics.rb:393:10:393:10 | h [element 0] : | semantics.rb:393:10:393:13 | ...[...] | +| semantics.rb:393:10:393:10 | h [element 0] : | semantics.rb:393:10:393:13 | ...[...] | +| semantics.rb:393:10:393:10 | h [element] : | semantics.rb:393:10:393:13 | ...[...] | +| semantics.rb:393:10:393:10 | h [element] : | semantics.rb:393:10:393:13 | ...[...] | +| semantics.rb:394:10:394:10 | h [element 1] : | semantics.rb:394:10:394:13 | ...[...] | +| semantics.rb:394:10:394:10 | h [element 1] : | semantics.rb:394:10:394:13 | ...[...] | +| semantics.rb:394:10:394:10 | h [element] : | semantics.rb:394:10:394:13 | ...[...] | +| semantics.rb:394:10:394:10 | h [element] : | semantics.rb:394:10:394:13 | ...[...] | +| semantics.rb:395:10:395:10 | h [element 0] : | semantics.rb:395:10:395:13 | ...[...] | +| semantics.rb:395:10:395:10 | h [element 0] : | semantics.rb:395:10:395:13 | ...[...] | +| semantics.rb:395:10:395:10 | h [element 1] : | semantics.rb:395:10:395:13 | ...[...] | +| semantics.rb:395:10:395:10 | h [element 1] : | semantics.rb:395:10:395:13 | ...[...] | +| semantics.rb:395:10:395:10 | h [element] : | semantics.rb:395:10:395:13 | ...[...] | +| semantics.rb:395:10:395:10 | h [element] : | semantics.rb:395:10:395:13 | ...[...] | +| semantics.rb:397:9:397:14 | call to s46 [element 1] : | semantics.rb:400:10:400:10 | x [element 1] : | +| semantics.rb:397:9:397:14 | call to s46 [element 1] : | semantics.rb:400:10:400:10 | x [element 1] : | +| semantics.rb:397:9:397:14 | call to s46 [element 1] : | semantics.rb:401:10:401:10 | x [element 1] : | +| semantics.rb:397:9:397:14 | call to s46 [element 1] : | semantics.rb:401:10:401:10 | x [element 1] : | +| semantics.rb:397:13:397:13 | h [element 1] : | semantics.rb:397:9:397:14 | call to s46 [element 1] : | +| semantics.rb:397:13:397:13 | h [element 1] : | semantics.rb:397:9:397:14 | call to s46 [element 1] : | +| semantics.rb:400:10:400:10 | x [element 1] : | semantics.rb:400:10:400:13 | ...[...] | +| semantics.rb:400:10:400:10 | x [element 1] : | semantics.rb:400:10:400:13 | ...[...] | +| semantics.rb:401:10:401:10 | x [element 1] : | semantics.rb:401:10:401:13 | ...[...] | +| semantics.rb:401:10:401:10 | x [element 1] : | semantics.rb:401:10:401:13 | ...[...] | +| semantics.rb:405:5:405:5 | [post] h [element :foo] : | semantics.rb:406:5:406:5 | h [element :foo] : | +| semantics.rb:405:5:405:5 | [post] h [element :foo] : | semantics.rb:406:5:406:5 | h [element :foo] : | +| semantics.rb:405:15:405:25 | call to source : | semantics.rb:405:5:405:5 | [post] h [element :foo] : | +| semantics.rb:405:15:405:25 | call to source : | semantics.rb:405:5:405:5 | [post] h [element :foo] : | +| semantics.rb:406:5:406:5 | [post] h [element :bar] : | semantics.rb:410:10:410:10 | h [element :bar] : | +| semantics.rb:406:5:406:5 | [post] h [element :bar] : | semantics.rb:410:10:410:10 | h [element :bar] : | +| semantics.rb:406:5:406:5 | [post] h [element :bar] : | semantics.rb:412:13:412:13 | h [element :bar] : | +| semantics.rb:406:5:406:5 | [post] h [element :bar] : | semantics.rb:412:13:412:13 | h [element :bar] : | +| semantics.rb:406:5:406:5 | [post] h [element :foo] : | semantics.rb:409:10:409:10 | h [element :foo] : | +| semantics.rb:406:5:406:5 | [post] h [element :foo] : | semantics.rb:409:10:409:10 | h [element :foo] : | +| semantics.rb:406:5:406:5 | h [element :foo] : | semantics.rb:406:5:406:5 | [post] h [element :foo] : | +| semantics.rb:406:5:406:5 | h [element :foo] : | semantics.rb:406:5:406:5 | [post] h [element :foo] : | +| semantics.rb:406:15:406:25 | call to source : | semantics.rb:406:5:406:5 | [post] h [element :bar] : | +| semantics.rb:406:15:406:25 | call to source : | semantics.rb:406:5:406:5 | [post] h [element :bar] : | +| semantics.rb:407:5:407:5 | [post] h [element] : | semantics.rb:409:10:409:10 | h [element] : | +| semantics.rb:407:5:407:5 | [post] h [element] : | semantics.rb:409:10:409:10 | h [element] : | +| semantics.rb:407:5:407:5 | [post] h [element] : | semantics.rb:410:10:410:10 | h [element] : | +| semantics.rb:407:5:407:5 | [post] h [element] : | semantics.rb:410:10:410:10 | h [element] : | +| semantics.rb:407:12:407:22 | call to source : | semantics.rb:407:5:407:5 | [post] h [element] : | +| semantics.rb:407:12:407:22 | call to source : | semantics.rb:407:5:407:5 | [post] h [element] : | +| semantics.rb:409:10:409:10 | h [element :foo] : | semantics.rb:409:10:409:16 | ...[...] | +| semantics.rb:409:10:409:10 | h [element :foo] : | semantics.rb:409:10:409:16 | ...[...] | +| semantics.rb:409:10:409:10 | h [element] : | semantics.rb:409:10:409:16 | ...[...] | +| semantics.rb:409:10:409:10 | h [element] : | semantics.rb:409:10:409:16 | ...[...] | +| semantics.rb:410:10:410:10 | h [element :bar] : | semantics.rb:410:10:410:16 | ...[...] | +| semantics.rb:410:10:410:10 | h [element :bar] : | semantics.rb:410:10:410:16 | ...[...] | +| semantics.rb:410:10:410:10 | h [element] : | semantics.rb:410:10:410:16 | ...[...] | +| semantics.rb:410:10:410:10 | h [element] : | semantics.rb:410:10:410:16 | ...[...] | +| semantics.rb:412:9:412:14 | call to s47 [element :bar] : | semantics.rb:415:10:415:10 | x [element :bar] : | +| semantics.rb:412:9:412:14 | call to s47 [element :bar] : | semantics.rb:415:10:415:10 | x [element :bar] : | +| semantics.rb:412:13:412:13 | h [element :bar] : | semantics.rb:412:9:412:14 | call to s47 [element :bar] : | +| semantics.rb:412:13:412:13 | h [element :bar] : | semantics.rb:412:9:412:14 | call to s47 [element :bar] : | +| semantics.rb:415:10:415:10 | x [element :bar] : | semantics.rb:415:10:415:16 | ...[...] | +| semantics.rb:415:10:415:10 | x [element :bar] : | semantics.rb:415:10:415:16 | ...[...] | +| semantics.rb:419:5:419:5 | [post] h [element :foo] : | semantics.rb:420:5:420:5 | h [element :foo] : | +| semantics.rb:419:5:419:5 | [post] h [element :foo] : | semantics.rb:420:5:420:5 | h [element :foo] : | +| semantics.rb:419:15:419:25 | call to source : | semantics.rb:419:5:419:5 | [post] h [element :foo] : | +| semantics.rb:419:15:419:25 | call to source : | semantics.rb:419:5:419:5 | [post] h [element :foo] : | +| semantics.rb:420:5:420:5 | [post] h [element :bar] : | semantics.rb:424:10:424:10 | h [element :bar] : | +| semantics.rb:420:5:420:5 | [post] h [element :bar] : | semantics.rb:424:10:424:10 | h [element :bar] : | +| semantics.rb:420:5:420:5 | [post] h [element :bar] : | semantics.rb:426:13:426:13 | h [element :bar] : | +| semantics.rb:420:5:420:5 | [post] h [element :bar] : | semantics.rb:426:13:426:13 | h [element :bar] : | +| semantics.rb:420:5:420:5 | [post] h [element :foo] : | semantics.rb:423:10:423:10 | h [element :foo] : | +| semantics.rb:420:5:420:5 | [post] h [element :foo] : | semantics.rb:423:10:423:10 | h [element :foo] : | +| semantics.rb:420:5:420:5 | h [element :foo] : | semantics.rb:420:5:420:5 | [post] h [element :foo] : | +| semantics.rb:420:5:420:5 | h [element :foo] : | semantics.rb:420:5:420:5 | [post] h [element :foo] : | +| semantics.rb:420:15:420:25 | call to source : | semantics.rb:420:5:420:5 | [post] h [element :bar] : | +| semantics.rb:420:15:420:25 | call to source : | semantics.rb:420:5:420:5 | [post] h [element :bar] : | +| semantics.rb:421:5:421:5 | [post] h [element] : | semantics.rb:423:10:423:10 | h [element] : | +| semantics.rb:421:5:421:5 | [post] h [element] : | semantics.rb:423:10:423:10 | h [element] : | +| semantics.rb:421:5:421:5 | [post] h [element] : | semantics.rb:424:10:424:10 | h [element] : | +| semantics.rb:421:5:421:5 | [post] h [element] : | semantics.rb:424:10:424:10 | h [element] : | +| semantics.rb:421:12:421:22 | call to source : | semantics.rb:421:5:421:5 | [post] h [element] : | +| semantics.rb:421:12:421:22 | call to source : | semantics.rb:421:5:421:5 | [post] h [element] : | +| semantics.rb:423:10:423:10 | h [element :foo] : | semantics.rb:423:10:423:16 | ...[...] | +| semantics.rb:423:10:423:10 | h [element :foo] : | semantics.rb:423:10:423:16 | ...[...] | +| semantics.rb:423:10:423:10 | h [element] : | semantics.rb:423:10:423:16 | ...[...] | +| semantics.rb:423:10:423:10 | h [element] : | semantics.rb:423:10:423:16 | ...[...] | +| semantics.rb:424:10:424:10 | h [element :bar] : | semantics.rb:424:10:424:16 | ...[...] | +| semantics.rb:424:10:424:10 | h [element :bar] : | semantics.rb:424:10:424:16 | ...[...] | +| semantics.rb:424:10:424:10 | h [element] : | semantics.rb:424:10:424:16 | ...[...] | +| semantics.rb:424:10:424:10 | h [element] : | semantics.rb:424:10:424:16 | ...[...] | +| semantics.rb:426:9:426:14 | call to s48 [element :bar] : | semantics.rb:429:10:429:10 | x [element :bar] : | +| semantics.rb:426:9:426:14 | call to s48 [element :bar] : | semantics.rb:429:10:429:10 | x [element :bar] : | +| semantics.rb:426:13:426:13 | h [element :bar] : | semantics.rb:426:9:426:14 | call to s48 [element :bar] : | +| semantics.rb:426:13:426:13 | h [element :bar] : | semantics.rb:426:9:426:14 | call to s48 [element :bar] : | +| semantics.rb:429:10:429:10 | x [element :bar] : | semantics.rb:429:10:429:16 | ...[...] | +| semantics.rb:429:10:429:10 | x [element :bar] : | semantics.rb:429:10:429:16 | ...[...] | +| semantics.rb:433:5:433:5 | [post] h [element :foo] : | semantics.rb:434:5:434:5 | h [element :foo] : | +| semantics.rb:433:5:433:5 | [post] h [element :foo] : | semantics.rb:434:5:434:5 | h [element :foo] : | +| semantics.rb:433:15:433:25 | call to source : | semantics.rb:433:5:433:5 | [post] h [element :foo] : | +| semantics.rb:433:15:433:25 | call to source : | semantics.rb:433:5:433:5 | [post] h [element :foo] : | +| semantics.rb:434:5:434:5 | [post] h [element :bar] : | semantics.rb:438:10:438:10 | h [element :bar] : | +| semantics.rb:434:5:434:5 | [post] h [element :bar] : | semantics.rb:438:10:438:10 | h [element :bar] : | +| semantics.rb:434:5:434:5 | [post] h [element :bar] : | semantics.rb:440:13:440:13 | h [element :bar] : | +| semantics.rb:434:5:434:5 | [post] h [element :bar] : | semantics.rb:440:13:440:13 | h [element :bar] : | +| semantics.rb:434:5:434:5 | [post] h [element :foo] : | semantics.rb:437:10:437:10 | h [element :foo] : | +| semantics.rb:434:5:434:5 | [post] h [element :foo] : | semantics.rb:437:10:437:10 | h [element :foo] : | +| semantics.rb:434:5:434:5 | h [element :foo] : | semantics.rb:434:5:434:5 | [post] h [element :foo] : | +| semantics.rb:434:5:434:5 | h [element :foo] : | semantics.rb:434:5:434:5 | [post] h [element :foo] : | +| semantics.rb:434:15:434:25 | call to source : | semantics.rb:434:5:434:5 | [post] h [element :bar] : | +| semantics.rb:434:15:434:25 | call to source : | semantics.rb:434:5:434:5 | [post] h [element :bar] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semantics.rb:437:10:437:10 | h [element] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semantics.rb:437:10:437:10 | h [element] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semantics.rb:438:10:438:10 | h [element] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semantics.rb:438:10:438:10 | h [element] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semantics.rb:440:13:440:13 | h [element] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semantics.rb:440:13:440:13 | h [element] : | +| semantics.rb:435:12:435:22 | call to source : | semantics.rb:435:5:435:5 | [post] h [element] : | +| semantics.rb:435:12:435:22 | call to source : | semantics.rb:435:5:435:5 | [post] h [element] : | +| semantics.rb:437:10:437:10 | h [element :foo] : | semantics.rb:437:10:437:16 | ...[...] | +| semantics.rb:437:10:437:10 | h [element :foo] : | semantics.rb:437:10:437:16 | ...[...] | +| semantics.rb:437:10:437:10 | h [element] : | semantics.rb:437:10:437:16 | ...[...] | +| semantics.rb:437:10:437:10 | h [element] : | semantics.rb:437:10:437:16 | ...[...] | +| semantics.rb:438:10:438:10 | h [element :bar] : | semantics.rb:438:10:438:16 | ...[...] | +| semantics.rb:438:10:438:10 | h [element :bar] : | semantics.rb:438:10:438:16 | ...[...] | +| semantics.rb:438:10:438:10 | h [element] : | semantics.rb:438:10:438:16 | ...[...] | +| semantics.rb:438:10:438:10 | h [element] : | semantics.rb:438:10:438:16 | ...[...] | +| semantics.rb:440:9:440:14 | call to s49 [element :bar] : | semantics.rb:443:10:443:10 | x [element :bar] : | +| semantics.rb:440:9:440:14 | call to s49 [element :bar] : | semantics.rb:443:10:443:10 | x [element :bar] : | +| semantics.rb:440:9:440:14 | call to s49 [element] : | semantics.rb:442:10:442:10 | x [element] : | +| semantics.rb:440:9:440:14 | call to s49 [element] : | semantics.rb:442:10:442:10 | x [element] : | +| semantics.rb:440:9:440:14 | call to s49 [element] : | semantics.rb:443:10:443:10 | x [element] : | +| semantics.rb:440:9:440:14 | call to s49 [element] : | semantics.rb:443:10:443:10 | x [element] : | +| semantics.rb:440:13:440:13 | h [element :bar] : | semantics.rb:440:9:440:14 | call to s49 [element :bar] : | +| semantics.rb:440:13:440:13 | h [element :bar] : | semantics.rb:440:9:440:14 | call to s49 [element :bar] : | +| semantics.rb:440:13:440:13 | h [element] : | semantics.rb:440:9:440:14 | call to s49 [element] : | +| semantics.rb:440:13:440:13 | h [element] : | semantics.rb:440:9:440:14 | call to s49 [element] : | +| semantics.rb:442:10:442:10 | x [element] : | semantics.rb:442:10:442:16 | ...[...] | +| semantics.rb:442:10:442:10 | x [element] : | semantics.rb:442:10:442:16 | ...[...] | +| semantics.rb:443:10:443:10 | x [element :bar] : | semantics.rb:443:10:443:16 | ...[...] | +| semantics.rb:443:10:443:10 | x [element :bar] : | semantics.rb:443:10:443:16 | ...[...] | +| semantics.rb:443:10:443:10 | x [element] : | semantics.rb:443:10:443:16 | ...[...] | +| semantics.rb:443:10:443:10 | x [element] : | semantics.rb:443:10:443:16 | ...[...] | +| semantics.rb:447:5:447:5 | [post] h [element :foo] : | semantics.rb:448:5:448:5 | h [element :foo] : | +| semantics.rb:447:5:447:5 | [post] h [element :foo] : | semantics.rb:448:5:448:5 | h [element :foo] : | +| semantics.rb:447:15:447:25 | call to source : | semantics.rb:447:5:447:5 | [post] h [element :foo] : | +| semantics.rb:447:15:447:25 | call to source : | semantics.rb:447:5:447:5 | [post] h [element :foo] : | +| semantics.rb:448:5:448:5 | [post] h [element :bar] : | semantics.rb:452:10:452:10 | h [element :bar] : | +| semantics.rb:448:5:448:5 | [post] h [element :bar] : | semantics.rb:452:10:452:10 | h [element :bar] : | +| semantics.rb:448:5:448:5 | [post] h [element :bar] : | semantics.rb:454:9:454:9 | h [element :bar] : | +| semantics.rb:448:5:448:5 | [post] h [element :bar] : | semantics.rb:454:9:454:9 | h [element :bar] : | +| semantics.rb:448:5:448:5 | [post] h [element :foo] : | semantics.rb:451:10:451:10 | h [element :foo] : | +| semantics.rb:448:5:448:5 | [post] h [element :foo] : | semantics.rb:451:10:451:10 | h [element :foo] : | +| semantics.rb:448:5:448:5 | h [element :foo] : | semantics.rb:448:5:448:5 | [post] h [element :foo] : | +| semantics.rb:448:5:448:5 | h [element :foo] : | semantics.rb:448:5:448:5 | [post] h [element :foo] : | +| semantics.rb:448:15:448:25 | call to source : | semantics.rb:448:5:448:5 | [post] h [element :bar] : | +| semantics.rb:448:15:448:25 | call to source : | semantics.rb:448:5:448:5 | [post] h [element :bar] : | +| semantics.rb:449:5:449:5 | [post] h [element] : | semantics.rb:451:10:451:10 | h [element] : | +| semantics.rb:449:5:449:5 | [post] h [element] : | semantics.rb:451:10:451:10 | h [element] : | +| semantics.rb:449:5:449:5 | [post] h [element] : | semantics.rb:452:10:452:10 | h [element] : | +| semantics.rb:449:5:449:5 | [post] h [element] : | semantics.rb:452:10:452:10 | h [element] : | +| semantics.rb:449:12:449:22 | call to source : | semantics.rb:449:5:449:5 | [post] h [element] : | +| semantics.rb:449:12:449:22 | call to source : | semantics.rb:449:5:449:5 | [post] h [element] : | +| semantics.rb:451:10:451:10 | h [element :foo] : | semantics.rb:451:10:451:16 | ...[...] | +| semantics.rb:451:10:451:10 | h [element :foo] : | semantics.rb:451:10:451:16 | ...[...] | +| semantics.rb:451:10:451:10 | h [element] : | semantics.rb:451:10:451:16 | ...[...] | +| semantics.rb:451:10:451:10 | h [element] : | semantics.rb:451:10:451:16 | ...[...] | +| semantics.rb:452:10:452:10 | h [element :bar] : | semantics.rb:452:10:452:16 | ...[...] | +| semantics.rb:452:10:452:10 | h [element :bar] : | semantics.rb:452:10:452:16 | ...[...] | +| semantics.rb:452:10:452:10 | h [element] : | semantics.rb:452:10:452:16 | ...[...] | +| semantics.rb:452:10:452:10 | h [element] : | semantics.rb:452:10:452:16 | ...[...] | +| semantics.rb:454:9:454:9 | [post] h [element :bar] : | semantics.rb:457:10:457:10 | h [element :bar] : | +| semantics.rb:454:9:454:9 | [post] h [element :bar] : | semantics.rb:457:10:457:10 | h [element :bar] : | +| semantics.rb:454:9:454:9 | h [element :bar] : | semantics.rb:454:9:454:9 | [post] h [element :bar] : | +| semantics.rb:454:9:454:9 | h [element :bar] : | semantics.rb:454:9:454:9 | [post] h [element :bar] : | +| semantics.rb:457:10:457:10 | h [element :bar] : | semantics.rb:457:10:457:16 | ...[...] | +| semantics.rb:457:10:457:10 | h [element :bar] : | semantics.rb:457:10:457:16 | ...[...] | +| semantics.rb:461:5:461:5 | [post] h [element :foo] : | semantics.rb:462:5:462:5 | h [element :foo] : | +| semantics.rb:461:5:461:5 | [post] h [element :foo] : | semantics.rb:462:5:462:5 | h [element :foo] : | +| semantics.rb:461:15:461:25 | call to source : | semantics.rb:461:5:461:5 | [post] h [element :foo] : | +| semantics.rb:461:15:461:25 | call to source : | semantics.rb:461:5:461:5 | [post] h [element :foo] : | +| semantics.rb:462:5:462:5 | [post] h [element :bar] : | semantics.rb:466:10:466:10 | h [element :bar] : | +| semantics.rb:462:5:462:5 | [post] h [element :bar] : | semantics.rb:466:10:466:10 | h [element :bar] : | +| semantics.rb:462:5:462:5 | [post] h [element :bar] : | semantics.rb:468:9:468:9 | h [element :bar] : | +| semantics.rb:462:5:462:5 | [post] h [element :bar] : | semantics.rb:468:9:468:9 | h [element :bar] : | +| semantics.rb:462:5:462:5 | [post] h [element :foo] : | semantics.rb:465:10:465:10 | h [element :foo] : | +| semantics.rb:462:5:462:5 | [post] h [element :foo] : | semantics.rb:465:10:465:10 | h [element :foo] : | +| semantics.rb:462:5:462:5 | h [element :foo] : | semantics.rb:462:5:462:5 | [post] h [element :foo] : | +| semantics.rb:462:5:462:5 | h [element :foo] : | semantics.rb:462:5:462:5 | [post] h [element :foo] : | +| semantics.rb:462:15:462:25 | call to source : | semantics.rb:462:5:462:5 | [post] h [element :bar] : | +| semantics.rb:462:15:462:25 | call to source : | semantics.rb:462:5:462:5 | [post] h [element :bar] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semantics.rb:465:10:465:10 | h [element] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semantics.rb:465:10:465:10 | h [element] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semantics.rb:466:10:466:10 | h [element] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semantics.rb:466:10:466:10 | h [element] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semantics.rb:468:9:468:9 | h [element] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semantics.rb:468:9:468:9 | h [element] : | +| semantics.rb:463:12:463:22 | call to source : | semantics.rb:463:5:463:5 | [post] h [element] : | +| semantics.rb:463:12:463:22 | call to source : | semantics.rb:463:5:463:5 | [post] h [element] : | +| semantics.rb:465:10:465:10 | h [element :foo] : | semantics.rb:465:10:465:16 | ...[...] | +| semantics.rb:465:10:465:10 | h [element :foo] : | semantics.rb:465:10:465:16 | ...[...] | +| semantics.rb:465:10:465:10 | h [element] : | semantics.rb:465:10:465:16 | ...[...] | +| semantics.rb:465:10:465:10 | h [element] : | semantics.rb:465:10:465:16 | ...[...] | +| semantics.rb:466:10:466:10 | h [element :bar] : | semantics.rb:466:10:466:16 | ...[...] | +| semantics.rb:466:10:466:10 | h [element :bar] : | semantics.rb:466:10:466:16 | ...[...] | +| semantics.rb:466:10:466:10 | h [element] : | semantics.rb:466:10:466:16 | ...[...] | +| semantics.rb:466:10:466:10 | h [element] : | semantics.rb:466:10:466:16 | ...[...] | +| semantics.rb:468:9:468:9 | [post] h [element :bar] : | semantics.rb:471:10:471:10 | h [element :bar] : | +| semantics.rb:468:9:468:9 | [post] h [element :bar] : | semantics.rb:471:10:471:10 | h [element :bar] : | +| semantics.rb:468:9:468:9 | [post] h [element] : | semantics.rb:470:10:470:10 | h [element] : | +| semantics.rb:468:9:468:9 | [post] h [element] : | semantics.rb:470:10:470:10 | h [element] : | +| semantics.rb:468:9:468:9 | [post] h [element] : | semantics.rb:471:10:471:10 | h [element] : | +| semantics.rb:468:9:468:9 | [post] h [element] : | semantics.rb:471:10:471:10 | h [element] : | +| semantics.rb:468:9:468:9 | h [element :bar] : | semantics.rb:468:9:468:9 | [post] h [element :bar] : | +| semantics.rb:468:9:468:9 | h [element :bar] : | semantics.rb:468:9:468:9 | [post] h [element :bar] : | +| semantics.rb:468:9:468:9 | h [element] : | semantics.rb:468:9:468:9 | [post] h [element] : | +| semantics.rb:468:9:468:9 | h [element] : | semantics.rb:468:9:468:9 | [post] h [element] : | +| semantics.rb:470:10:470:10 | h [element] : | semantics.rb:470:10:470:16 | ...[...] | +| semantics.rb:470:10:470:10 | h [element] : | semantics.rb:470:10:470:16 | ...[...] | +| semantics.rb:471:10:471:10 | h [element :bar] : | semantics.rb:471:10:471:16 | ...[...] | +| semantics.rb:471:10:471:10 | h [element :bar] : | semantics.rb:471:10:471:16 | ...[...] | +| semantics.rb:471:10:471:10 | h [element] : | semantics.rb:471:10:471:16 | ...[...] | +| semantics.rb:471:10:471:10 | h [element] : | semantics.rb:471:10:471:16 | ...[...] | +| semantics.rb:475:5:475:5 | [post] h [element :foo] : | semantics.rb:476:5:476:5 | h [element :foo] : | +| semantics.rb:475:5:475:5 | [post] h [element :foo] : | semantics.rb:476:5:476:5 | h [element :foo] : | +| semantics.rb:475:15:475:25 | call to source : | semantics.rb:475:5:475:5 | [post] h [element :foo] : | +| semantics.rb:475:15:475:25 | call to source : | semantics.rb:475:5:475:5 | [post] h [element :foo] : | +| semantics.rb:476:5:476:5 | [post] h [element :bar] : | semantics.rb:480:10:480:10 | h [element :bar] : | +| semantics.rb:476:5:476:5 | [post] h [element :bar] : | semantics.rb:480:10:480:10 | h [element :bar] : | +| semantics.rb:476:5:476:5 | [post] h [element :bar] : | semantics.rb:482:5:482:5 | h [element :bar] : | +| semantics.rb:476:5:476:5 | [post] h [element :bar] : | semantics.rb:482:5:482:5 | h [element :bar] : | +| semantics.rb:476:5:476:5 | [post] h [element :foo] : | semantics.rb:479:10:479:10 | h [element :foo] : | +| semantics.rb:476:5:476:5 | [post] h [element :foo] : | semantics.rb:479:10:479:10 | h [element :foo] : | +| semantics.rb:476:5:476:5 | h [element :foo] : | semantics.rb:476:5:476:5 | [post] h [element :foo] : | +| semantics.rb:476:5:476:5 | h [element :foo] : | semantics.rb:476:5:476:5 | [post] h [element :foo] : | +| semantics.rb:476:15:476:25 | call to source : | semantics.rb:476:5:476:5 | [post] h [element :bar] : | +| semantics.rb:476:15:476:25 | call to source : | semantics.rb:476:5:476:5 | [post] h [element :bar] : | +| semantics.rb:477:5:477:5 | [post] h [element] : | semantics.rb:479:10:479:10 | h [element] : | +| semantics.rb:477:5:477:5 | [post] h [element] : | semantics.rb:479:10:479:10 | h [element] : | +| semantics.rb:477:5:477:5 | [post] h [element] : | semantics.rb:480:10:480:10 | h [element] : | +| semantics.rb:477:5:477:5 | [post] h [element] : | semantics.rb:480:10:480:10 | h [element] : | +| semantics.rb:477:12:477:22 | call to source : | semantics.rb:477:5:477:5 | [post] h [element] : | +| semantics.rb:477:12:477:22 | call to source : | semantics.rb:477:5:477:5 | [post] h [element] : | +| semantics.rb:479:10:479:10 | h [element :foo] : | semantics.rb:479:10:479:16 | ...[...] | +| semantics.rb:479:10:479:10 | h [element :foo] : | semantics.rb:479:10:479:16 | ...[...] | +| semantics.rb:479:10:479:10 | h [element] : | semantics.rb:479:10:479:16 | ...[...] | +| semantics.rb:479:10:479:10 | h [element] : | semantics.rb:479:10:479:16 | ...[...] | +| semantics.rb:480:10:480:10 | h [element :bar] : | semantics.rb:480:10:480:16 | ...[...] | +| semantics.rb:480:10:480:10 | h [element :bar] : | semantics.rb:480:10:480:16 | ...[...] | +| semantics.rb:480:10:480:10 | h [element] : | semantics.rb:480:10:480:16 | ...[...] | +| semantics.rb:480:10:480:10 | h [element] : | semantics.rb:480:10:480:16 | ...[...] | +| semantics.rb:482:5:482:5 | [post] h [element :bar] : | semantics.rb:485:10:485:10 | h [element :bar] : | +| semantics.rb:482:5:482:5 | [post] h [element :bar] : | semantics.rb:485:10:485:10 | h [element :bar] : | +| semantics.rb:482:5:482:5 | h [element :bar] : | semantics.rb:482:5:482:5 | [post] h [element :bar] : | +| semantics.rb:482:5:482:5 | h [element :bar] : | semantics.rb:482:5:482:5 | [post] h [element :bar] : | +| semantics.rb:485:10:485:10 | h [element :bar] : | semantics.rb:485:10:485:16 | ...[...] | +| semantics.rb:485:10:485:10 | h [element :bar] : | semantics.rb:485:10:485:16 | ...[...] | +| semantics.rb:489:5:489:5 | [post] h [element :foo] : | semantics.rb:490:5:490:5 | h [element :foo] : | +| semantics.rb:489:5:489:5 | [post] h [element :foo] : | semantics.rb:490:5:490:5 | h [element :foo] : | +| semantics.rb:489:15:489:25 | call to source : | semantics.rb:489:5:489:5 | [post] h [element :foo] : | +| semantics.rb:489:15:489:25 | call to source : | semantics.rb:489:5:489:5 | [post] h [element :foo] : | +| semantics.rb:490:5:490:5 | [post] h [element :bar] : | semantics.rb:494:10:494:10 | h [element :bar] : | +| semantics.rb:490:5:490:5 | [post] h [element :bar] : | semantics.rb:494:10:494:10 | h [element :bar] : | +| semantics.rb:490:5:490:5 | [post] h [element :bar] : | semantics.rb:496:9:496:9 | h [element :bar] : | +| semantics.rb:490:5:490:5 | [post] h [element :bar] : | semantics.rb:496:9:496:9 | h [element :bar] : | +| semantics.rb:490:5:490:5 | [post] h [element :foo] : | semantics.rb:493:10:493:10 | h [element :foo] : | +| semantics.rb:490:5:490:5 | [post] h [element :foo] : | semantics.rb:493:10:493:10 | h [element :foo] : | +| semantics.rb:490:5:490:5 | h [element :foo] : | semantics.rb:490:5:490:5 | [post] h [element :foo] : | +| semantics.rb:490:5:490:5 | h [element :foo] : | semantics.rb:490:5:490:5 | [post] h [element :foo] : | +| semantics.rb:490:15:490:25 | call to source : | semantics.rb:490:5:490:5 | [post] h [element :bar] : | +| semantics.rb:490:15:490:25 | call to source : | semantics.rb:490:5:490:5 | [post] h [element :bar] : | +| semantics.rb:491:5:491:5 | [post] h [element] : | semantics.rb:493:10:493:10 | h [element] : | +| semantics.rb:491:5:491:5 | [post] h [element] : | semantics.rb:493:10:493:10 | h [element] : | +| semantics.rb:491:5:491:5 | [post] h [element] : | semantics.rb:494:10:494:10 | h [element] : | +| semantics.rb:491:5:491:5 | [post] h [element] : | semantics.rb:494:10:494:10 | h [element] : | +| semantics.rb:491:12:491:22 | call to source : | semantics.rb:491:5:491:5 | [post] h [element] : | +| semantics.rb:491:12:491:22 | call to source : | semantics.rb:491:5:491:5 | [post] h [element] : | +| semantics.rb:493:10:493:10 | h [element :foo] : | semantics.rb:493:10:493:16 | ...[...] | +| semantics.rb:493:10:493:10 | h [element :foo] : | semantics.rb:493:10:493:16 | ...[...] | +| semantics.rb:493:10:493:10 | h [element] : | semantics.rb:493:10:493:16 | ...[...] | +| semantics.rb:493:10:493:10 | h [element] : | semantics.rb:493:10:493:16 | ...[...] | +| semantics.rb:494:10:494:10 | h [element :bar] : | semantics.rb:494:10:494:16 | ...[...] | +| semantics.rb:494:10:494:10 | h [element :bar] : | semantics.rb:494:10:494:16 | ...[...] | +| semantics.rb:494:10:494:10 | h [element] : | semantics.rb:494:10:494:16 | ...[...] | +| semantics.rb:494:10:494:10 | h [element] : | semantics.rb:494:10:494:16 | ...[...] | +| semantics.rb:496:9:496:9 | h [element :bar] : | semantics.rb:496:9:496:15 | call to s53 [element :bar] : | +| semantics.rb:496:9:496:9 | h [element :bar] : | semantics.rb:496:9:496:15 | call to s53 [element :bar] : | +| semantics.rb:496:9:496:15 | call to s53 [element :bar] : | semantics.rb:499:10:499:10 | x [element :bar] : | +| semantics.rb:496:9:496:15 | call to s53 [element :bar] : | semantics.rb:499:10:499:10 | x [element :bar] : | +| semantics.rb:499:10:499:10 | x [element :bar] : | semantics.rb:499:10:499:16 | ...[...] | +| semantics.rb:499:10:499:10 | x [element :bar] : | semantics.rb:499:10:499:16 | ...[...] | +| semantics.rb:501:10:501:20 | call to source : | semantics.rb:501:10:501:26 | call to s53 | +| semantics.rb:501:10:501:20 | call to source : | semantics.rb:501:10:501:26 | call to s53 | +| semantics.rb:505:5:505:5 | [post] h [element :foo] : | semantics.rb:506:5:506:5 | h [element :foo] : | +| semantics.rb:505:5:505:5 | [post] h [element :foo] : | semantics.rb:506:5:506:5 | h [element :foo] : | +| semantics.rb:505:15:505:25 | call to source : | semantics.rb:505:5:505:5 | [post] h [element :foo] : | +| semantics.rb:505:15:505:25 | call to source : | semantics.rb:505:5:505:5 | [post] h [element :foo] : | +| semantics.rb:506:5:506:5 | [post] h [element :bar] : | semantics.rb:510:10:510:10 | h [element :bar] : | +| semantics.rb:506:5:506:5 | [post] h [element :bar] : | semantics.rb:510:10:510:10 | h [element :bar] : | +| semantics.rb:506:5:506:5 | [post] h [element :bar] : | semantics.rb:512:9:512:9 | h [element :bar] : | +| semantics.rb:506:5:506:5 | [post] h [element :bar] : | semantics.rb:512:9:512:9 | h [element :bar] : | +| semantics.rb:506:5:506:5 | [post] h [element :foo] : | semantics.rb:509:10:509:10 | h [element :foo] : | +| semantics.rb:506:5:506:5 | [post] h [element :foo] : | semantics.rb:509:10:509:10 | h [element :foo] : | +| semantics.rb:506:5:506:5 | h [element :foo] : | semantics.rb:506:5:506:5 | [post] h [element :foo] : | +| semantics.rb:506:5:506:5 | h [element :foo] : | semantics.rb:506:5:506:5 | [post] h [element :foo] : | +| semantics.rb:506:15:506:25 | call to source : | semantics.rb:506:5:506:5 | [post] h [element :bar] : | +| semantics.rb:506:15:506:25 | call to source : | semantics.rb:506:5:506:5 | [post] h [element :bar] : | +| semantics.rb:507:5:507:5 | [post] h [element] : | semantics.rb:509:10:509:10 | h [element] : | +| semantics.rb:507:5:507:5 | [post] h [element] : | semantics.rb:509:10:509:10 | h [element] : | +| semantics.rb:507:5:507:5 | [post] h [element] : | semantics.rb:510:10:510:10 | h [element] : | +| semantics.rb:507:5:507:5 | [post] h [element] : | semantics.rb:510:10:510:10 | h [element] : | +| semantics.rb:507:12:507:22 | call to source : | semantics.rb:507:5:507:5 | [post] h [element] : | +| semantics.rb:507:12:507:22 | call to source : | semantics.rb:507:5:507:5 | [post] h [element] : | +| semantics.rb:509:10:509:10 | h [element :foo] : | semantics.rb:509:10:509:16 | ...[...] | +| semantics.rb:509:10:509:10 | h [element :foo] : | semantics.rb:509:10:509:16 | ...[...] | +| semantics.rb:509:10:509:10 | h [element] : | semantics.rb:509:10:509:16 | ...[...] | +| semantics.rb:509:10:509:10 | h [element] : | semantics.rb:509:10:509:16 | ...[...] | +| semantics.rb:510:10:510:10 | h [element :bar] : | semantics.rb:510:10:510:16 | ...[...] | +| semantics.rb:510:10:510:10 | h [element :bar] : | semantics.rb:510:10:510:16 | ...[...] | +| semantics.rb:510:10:510:10 | h [element] : | semantics.rb:510:10:510:16 | ...[...] | +| semantics.rb:510:10:510:10 | h [element] : | semantics.rb:510:10:510:16 | ...[...] | +| semantics.rb:512:9:512:9 | h [element :bar] : | semantics.rb:512:9:512:15 | call to s54 [element :bar] : | +| semantics.rb:512:9:512:9 | h [element :bar] : | semantics.rb:512:9:512:15 | call to s54 [element :bar] : | +| semantics.rb:512:9:512:15 | call to s54 [element :bar] : | semantics.rb:515:10:515:10 | x [element :bar] : | +| semantics.rb:512:9:512:15 | call to s54 [element :bar] : | semantics.rb:515:10:515:10 | x [element :bar] : | +| semantics.rb:515:10:515:10 | x [element :bar] : | semantics.rb:515:10:515:16 | ...[...] | +| semantics.rb:515:10:515:10 | x [element :bar] : | semantics.rb:515:10:515:16 | ...[...] | +nodes +| semantics.rb:2:9:2:18 | call to source : | semmle.label | call to source : | +| semantics.rb:2:9:2:18 | call to source : | semmle.label | call to source : | +| semantics.rb:3:9:3:9 | a : | semmle.label | a : | +| semantics.rb:3:9:3:9 | a : | semmle.label | a : | +| semantics.rb:3:9:3:14 | call to s1 : | semmle.label | call to s1 : | +| semantics.rb:3:9:3:14 | call to s1 : | semmle.label | call to s1 : | +| semantics.rb:4:10:4:10 | x | semmle.label | x | +| semantics.rb:4:10:4:10 | x | semmle.label | x | +| semantics.rb:8:9:8:18 | call to source : | semmle.label | call to source : | +| semantics.rb:8:9:8:18 | call to source : | semmle.label | call to source : | +| semantics.rb:9:5:9:5 | [post] x : | semmle.label | [post] x : | +| semantics.rb:9:5:9:5 | [post] x : | semmle.label | [post] x : | +| semantics.rb:9:10:9:10 | a : | semmle.label | a : | +| semantics.rb:9:10:9:10 | a : | semmle.label | a : | +| semantics.rb:10:10:10:10 | x | semmle.label | x | +| semantics.rb:10:10:10:10 | x | semmle.label | x | +| semantics.rb:14:9:14:18 | call to source : | semmle.label | call to source : | +| semantics.rb:14:9:14:18 | call to source : | semmle.label | call to source : | +| semantics.rb:15:8:15:8 | a : | semmle.label | a : | +| semantics.rb:15:8:15:8 | a : | semmle.label | a : | +| semantics.rb:15:11:15:11 | [post] x : | semmle.label | [post] x : | +| semantics.rb:15:11:15:11 | [post] x : | semmle.label | [post] x : | +| semantics.rb:16:10:16:10 | x | semmle.label | x | +| semantics.rb:16:10:16:10 | x | semmle.label | x | +| semantics.rb:22:10:22:33 | call to s4 | semmle.label | call to s4 | +| semantics.rb:22:10:22:33 | call to s4 | semmle.label | call to s4 | +| semantics.rb:22:18:22:32 | call to source : | semmle.label | call to source : | +| semantics.rb:22:18:22:32 | call to source : | semmle.label | call to source : | +| semantics.rb:23:10:23:33 | call to s4 | semmle.label | call to s4 | +| semantics.rb:23:10:23:33 | call to s4 | semmle.label | call to s4 | +| semantics.rb:23:23:23:32 | call to source : | semmle.label | call to source : | +| semantics.rb:23:23:23:32 | call to source : | semmle.label | call to source : | +| semantics.rb:28:9:28:18 | call to source : | semmle.label | call to source : | +| semantics.rb:28:9:28:18 | call to source : | semmle.label | call to source : | +| semantics.rb:29:8:29:8 | a : | semmle.label | a : | +| semantics.rb:29:8:29:8 | a : | semmle.label | a : | +| semantics.rb:29:14:29:14 | [post] y : | semmle.label | [post] y : | +| semantics.rb:29:14:29:14 | [post] y : | semmle.label | [post] y : | +| semantics.rb:29:17:29:17 | [post] z : | semmle.label | [post] z : | +| semantics.rb:29:17:29:17 | [post] z : | semmle.label | [post] z : | +| semantics.rb:31:10:31:10 | y | semmle.label | y | +| semantics.rb:31:10:31:10 | y | semmle.label | y | +| semantics.rb:32:10:32:10 | z | semmle.label | z | +| semantics.rb:32:10:32:10 | z | semmle.label | z | +| semantics.rb:40:9:40:18 | call to source : | semmle.label | call to source : | +| semantics.rb:40:9:40:18 | call to source : | semmle.label | call to source : | +| semantics.rb:41:8:41:8 | a : | semmle.label | a : | +| semantics.rb:41:8:41:8 | a : | semmle.label | a : | +| semantics.rb:41:16:41:16 | [post] x : | semmle.label | [post] x : | +| semantics.rb:41:16:41:16 | [post] x : | semmle.label | [post] x : | +| semantics.rb:42:10:42:10 | x | semmle.label | x | +| semantics.rb:42:10:42:10 | x | semmle.label | x | +| semantics.rb:46:10:46:26 | call to s8 | semmle.label | call to s8 | +| semantics.rb:46:10:46:26 | call to s8 | semmle.label | call to s8 | +| semantics.rb:46:15:46:24 | call to source : | semmle.label | call to source : | +| semantics.rb:46:15:46:24 | call to source : | semmle.label | call to source : | +| semantics.rb:47:10:49:7 | call to s8 | semmle.label | call to s8 | +| semantics.rb:47:10:49:7 | call to s8 | semmle.label | call to s8 | +| semantics.rb:48:9:48:18 | call to source : | semmle.label | call to source : | +| semantics.rb:48:9:48:18 | call to source : | semmle.label | call to source : | +| semantics.rb:53:8:53:17 | call to source : | semmle.label | call to source : | +| semantics.rb:53:8:53:17 | call to source : | semmle.label | call to source : | +| semantics.rb:53:23:53:23 | x : | semmle.label | x : | +| semantics.rb:53:23:53:23 | x : | semmle.label | x : | +| semantics.rb:53:31:53:31 | x | semmle.label | x | +| semantics.rb:53:31:53:31 | x | semmle.label | x | +| semantics.rb:54:8:54:17 | call to source : | semmle.label | call to source : | +| semantics.rb:54:8:54:17 | call to source : | semmle.label | call to source : | +| semantics.rb:54:24:54:24 | x : | semmle.label | x : | +| semantics.rb:54:24:54:24 | x : | semmle.label | x : | +| semantics.rb:55:14:55:14 | x | semmle.label | x | +| semantics.rb:55:14:55:14 | x | semmle.label | x | +| semantics.rb:60:9:60:18 | call to source : | semmle.label | call to source : | +| semantics.rb:60:9:60:18 | call to source : | semmle.label | call to source : | +| semantics.rb:61:10:61:15 | call to s10 | semmle.label | call to s10 | +| semantics.rb:61:10:61:15 | call to s10 | semmle.label | call to s10 | +| semantics.rb:61:14:61:14 | a : | semmle.label | a : | +| semantics.rb:61:14:61:14 | a : | semmle.label | a : | +| semantics.rb:62:10:62:18 | call to s10 | semmle.label | call to s10 | +| semantics.rb:62:10:62:18 | call to s10 | semmle.label | call to s10 | +| semantics.rb:62:17:62:17 | a : | semmle.label | a : | +| semantics.rb:62:17:62:17 | a : | semmle.label | a : | +| semantics.rb:63:10:63:20 | call to s10 | semmle.label | call to s10 | +| semantics.rb:63:10:63:20 | call to s10 | semmle.label | call to s10 | +| semantics.rb:63:19:63:19 | a : | semmle.label | a : | +| semantics.rb:63:19:63:19 | a : | semmle.label | a : | +| semantics.rb:64:10:64:28 | call to s10 | semmle.label | call to s10 | +| semantics.rb:64:10:64:28 | call to s10 | semmle.label | call to s10 | +| semantics.rb:64:27:64:27 | a : | semmle.label | a : | +| semantics.rb:64:27:64:27 | a : | semmle.label | a : | +| semantics.rb:66:10:66:16 | call to s10 | semmle.label | call to s10 | +| semantics.rb:66:10:66:16 | call to s10 | semmle.label | call to s10 | +| semantics.rb:66:14:66:15 | &... : | semmle.label | &... : | +| semantics.rb:66:14:66:15 | &... : | semmle.label | &... : | +| semantics.rb:80:9:80:18 | call to source : | semmle.label | call to source : | +| semantics.rb:80:9:80:18 | call to source : | semmle.label | call to source : | +| semantics.rb:81:5:81:5 | a : | semmle.label | a : | +| semantics.rb:81:5:81:5 | a : | semmle.label | a : | +| semantics.rb:81:11:81:11 | [post] x : | semmle.label | [post] x : | +| semantics.rb:81:11:81:11 | [post] x : | semmle.label | [post] x : | +| semantics.rb:81:14:81:14 | [post] y : | semmle.label | [post] y : | +| semantics.rb:81:14:81:14 | [post] y : | semmle.label | [post] y : | +| semantics.rb:81:22:81:22 | [post] z : | semmle.label | [post] z : | +| semantics.rb:81:22:81:22 | [post] z : | semmle.label | [post] z : | +| semantics.rb:82:10:82:10 | x | semmle.label | x | +| semantics.rb:82:10:82:10 | x | semmle.label | x | +| semantics.rb:83:10:83:10 | y | semmle.label | y | +| semantics.rb:83:10:83:10 | y | semmle.label | y | +| semantics.rb:84:10:84:10 | z | semmle.label | z | +| semantics.rb:84:10:84:10 | z | semmle.label | z | +| semantics.rb:89:9:89:18 | call to source : | semmle.label | call to source : | +| semantics.rb:89:9:89:18 | call to source : | semmle.label | call to source : | +| semantics.rb:91:10:91:20 | call to s13 | semmle.label | call to s13 | +| semantics.rb:91:10:91:20 | call to s13 | semmle.label | call to s13 | +| semantics.rb:91:19:91:19 | a : | semmle.label | a : | +| semantics.rb:91:19:91:19 | a : | semmle.label | a : | +| semantics.rb:92:10:92:28 | call to s13 | semmle.label | call to s13 | +| semantics.rb:92:10:92:28 | call to s13 | semmle.label | call to s13 | +| semantics.rb:92:27:92:27 | a : | semmle.label | a : | +| semantics.rb:92:27:92:27 | a : | semmle.label | a : | +| semantics.rb:97:9:97:18 | call to source : | semmle.label | call to source : | +| semantics.rb:97:9:97:18 | call to source : | semmle.label | call to source : | +| semantics.rb:98:5:98:5 | a : | semmle.label | a : | +| semantics.rb:98:5:98:5 | a : | semmle.label | a : | +| semantics.rb:98:19:98:19 | [post] x : | semmle.label | [post] x : | +| semantics.rb:98:19:98:19 | [post] x : | semmle.label | [post] x : | +| semantics.rb:99:5:99:5 | a : | semmle.label | a : | +| semantics.rb:99:5:99:5 | a : | semmle.label | a : | +| semantics.rb:99:16:99:16 | [post] y : | semmle.label | [post] y : | +| semantics.rb:99:16:99:16 | [post] y : | semmle.label | [post] y : | +| semantics.rb:99:24:99:24 | [post] z : | semmle.label | [post] z : | +| semantics.rb:99:24:99:24 | [post] z : | semmle.label | [post] z : | +| semantics.rb:101:10:101:10 | x | semmle.label | x | +| semantics.rb:101:10:101:10 | x | semmle.label | x | +| semantics.rb:102:10:102:10 | y | semmle.label | y | +| semantics.rb:102:10:102:10 | y | semmle.label | y | +| semantics.rb:103:10:103:10 | z | semmle.label | z | +| semantics.rb:103:10:103:10 | z | semmle.label | z | +| semantics.rb:107:9:107:18 | call to source : | semmle.label | call to source : | +| semantics.rb:109:10:109:17 | call to s15 | semmle.label | call to s15 | +| semantics.rb:109:14:109:16 | ** ... : | semmle.label | ** ... : | +| semantics.rb:110:10:110:31 | call to s15 | semmle.label | call to s15 | +| semantics.rb:110:28:110:30 | ** ... : | semmle.label | ** ... : | +| semantics.rb:114:9:114:18 | call to source : | semmle.label | call to source : | +| semantics.rb:114:9:114:18 | call to source : | semmle.label | call to source : | +| semantics.rb:115:9:115:18 | call to source : | semmle.label | call to source : | +| semantics.rb:115:9:115:18 | call to source : | semmle.label | call to source : | +| semantics.rb:116:14:116:14 | a : | semmle.label | a : | +| semantics.rb:116:14:116:14 | a : | semmle.label | a : | +| semantics.rb:117:10:117:17 | call to s16 | semmle.label | call to s16 | +| semantics.rb:117:10:117:17 | call to s16 | semmle.label | call to s16 | +| semantics.rb:117:14:117:16 | ** ... [element :a] : | semmle.label | ** ... [element :a] : | +| semantics.rb:117:14:117:16 | ** ... [element :a] : | semmle.label | ** ... [element :a] : | +| semantics.rb:117:16:117:16 | h [element :a] : | semmle.label | h [element :a] : | +| semantics.rb:117:16:117:16 | h [element :a] : | semmle.label | h [element :a] : | +| semantics.rb:119:10:119:18 | call to s16 | semmle.label | call to s16 | +| semantics.rb:119:10:119:18 | call to s16 | semmle.label | call to s16 | +| semantics.rb:119:17:119:17 | a : | semmle.label | a : | +| semantics.rb:119:17:119:17 | a : | semmle.label | a : | +| semantics.rb:121:10:121:23 | call to s16 | semmle.label | call to s16 | +| semantics.rb:121:10:121:23 | call to s16 | semmle.label | call to s16 | +| semantics.rb:121:17:121:17 | b : | semmle.label | b : | +| semantics.rb:121:17:121:17 | b : | semmle.label | b : | +| semantics.rb:121:20:121:22 | ** ... [element :a] : | semmle.label | ** ... [element :a] : | +| semantics.rb:121:20:121:22 | ** ... [element :a] : | semmle.label | ** ... [element :a] : | +| semantics.rb:121:22:121:22 | h [element :a] : | semmle.label | h [element :a] : | +| semantics.rb:121:22:121:22 | h [element :a] : | semmle.label | h [element :a] : | +| semantics.rb:125:9:125:18 | call to source : | semmle.label | call to source : | +| semantics.rb:125:9:125:18 | call to source : | semmle.label | call to source : | +| semantics.rb:126:9:126:9 | a : | semmle.label | a : | +| semantics.rb:126:9:126:9 | a : | semmle.label | a : | +| semantics.rb:126:12:126:14 | [post] ** ... : | semmle.label | [post] ** ... : | +| semantics.rb:126:12:126:14 | [post] ** ... : | semmle.label | [post] ** ... : | +| semantics.rb:127:10:127:10 | h | semmle.label | h | +| semantics.rb:127:10:127:10 | h | semmle.label | h | +| semantics.rb:141:9:141:18 | call to source : | semmle.label | call to source : | +| semantics.rb:141:9:141:18 | call to source : | semmle.label | call to source : | +| semantics.rb:145:5:145:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:145:5:145:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:147:10:147:15 | call to s19 | semmle.label | call to s19 | +| semantics.rb:147:10:147:15 | call to s19 | semmle.label | call to s19 | +| semantics.rb:147:14:147:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:147:14:147:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:151:9:151:18 | call to source : | semmle.label | call to source : | +| semantics.rb:151:9:151:18 | call to source : | semmle.label | call to source : | +| semantics.rb:152:9:152:14 | call to s20 [element] : | semmle.label | call to s20 [element] : | +| semantics.rb:152:9:152:14 | call to s20 [element] : | semmle.label | call to s20 [element] : | +| semantics.rb:152:13:152:13 | a : | semmle.label | a : | +| semantics.rb:152:13:152:13 | a : | semmle.label | a : | +| semantics.rb:153:10:153:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:153:10:153:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:153:10:153:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:153:10:153:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:154:10:154:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:154:10:154:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:154:10:154:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:154:10:154:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:158:9:158:18 | call to source : | semmle.label | call to source : | +| semantics.rb:158:9:158:18 | call to source : | semmle.label | call to source : | +| semantics.rb:159:9:159:18 | call to source : | semmle.label | call to source : | +| semantics.rb:159:9:159:18 | call to source : | semmle.label | call to source : | +| semantics.rb:162:5:162:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:162:5:162:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:163:5:163:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:163:5:163:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:165:10:165:15 | call to s21 | semmle.label | call to s21 | +| semantics.rb:165:10:165:15 | call to s21 | semmle.label | call to s21 | +| semantics.rb:165:14:165:14 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:165:14:165:14 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:165:14:165:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:165:14:165:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:169:9:169:18 | call to source : | semmle.label | call to source : | +| semantics.rb:169:9:169:18 | call to source : | semmle.label | call to source : | +| semantics.rb:170:9:170:14 | call to s22 [element] : | semmle.label | call to s22 [element] : | +| semantics.rb:170:9:170:14 | call to s22 [element] : | semmle.label | call to s22 [element] : | +| semantics.rb:170:13:170:13 | a : | semmle.label | a : | +| semantics.rb:170:13:170:13 | a : | semmle.label | a : | +| semantics.rb:171:10:171:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:171:10:171:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:171:10:171:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:171:10:171:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:172:10:172:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:172:10:172:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:172:10:172:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:172:10:172:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:176:9:176:18 | call to source : | semmle.label | call to source : | +| semantics.rb:176:9:176:18 | call to source : | semmle.label | call to source : | +| semantics.rb:179:5:179:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:179:5:179:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:180:5:180:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:180:5:180:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:180:5:180:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:180:5:180:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:181:10:181:15 | call to s23 | semmle.label | call to s23 | +| semantics.rb:181:10:181:15 | call to s23 | semmle.label | call to s23 | +| semantics.rb:181:14:181:14 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:181:14:181:14 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:185:9:185:18 | call to source : | semmle.label | call to source : | +| semantics.rb:185:9:185:18 | call to source : | semmle.label | call to source : | +| semantics.rb:186:9:186:14 | call to s24 [element 0] : | semmle.label | call to s24 [element 0] : | +| semantics.rb:186:9:186:14 | call to s24 [element 0] : | semmle.label | call to s24 [element 0] : | +| semantics.rb:186:13:186:13 | a : | semmle.label | a : | +| semantics.rb:186:13:186:13 | a : | semmle.label | a : | +| semantics.rb:187:10:187:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:187:10:187:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:187:10:187:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:187:10:187:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:189:10:189:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:189:10:189:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:189:10:189:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:189:10:189:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:193:9:193:18 | call to source : | semmle.label | call to source : | +| semantics.rb:193:9:193:18 | call to source : | semmle.label | call to source : | +| semantics.rb:196:5:196:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:196:5:196:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:197:5:197:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:197:5:197:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:197:5:197:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:197:5:197:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:198:10:198:15 | call to s25 | semmle.label | call to s25 | +| semantics.rb:198:10:198:15 | call to s25 | semmle.label | call to s25 | +| semantics.rb:198:14:198:14 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:198:14:198:14 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:202:9:202:18 | call to source : | semmle.label | call to source : | +| semantics.rb:202:9:202:18 | call to source : | semmle.label | call to source : | +| semantics.rb:203:9:203:14 | call to s26 [element 0] : | semmle.label | call to s26 [element 0] : | +| semantics.rb:203:9:203:14 | call to s26 [element 0] : | semmle.label | call to s26 [element 0] : | +| semantics.rb:203:13:203:13 | a : | semmle.label | a : | +| semantics.rb:203:13:203:13 | a : | semmle.label | a : | +| semantics.rb:204:10:204:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:204:10:204:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:204:10:204:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:204:10:204:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:206:10:206:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:206:10:206:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:206:10:206:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:206:10:206:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:211:9:211:18 | call to source : | semmle.label | call to source : | +| semantics.rb:211:9:211:18 | call to source : | semmle.label | call to source : | +| semantics.rb:212:9:212:18 | call to source : | semmle.label | call to source : | +| semantics.rb:212:9:212:18 | call to source : | semmle.label | call to source : | +| semantics.rb:213:9:213:18 | call to source : | semmle.label | call to source : | +| semantics.rb:213:9:213:18 | call to source : | semmle.label | call to source : | +| semantics.rb:217:5:217:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:217:5:217:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:218:5:218:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:218:5:218:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:218:5:218:5 | [post] h [element 2] : | semmle.label | [post] h [element 2] : | +| semantics.rb:218:5:218:5 | [post] h [element 2] : | semmle.label | [post] h [element 2] : | +| semantics.rb:218:5:218:5 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:218:5:218:5 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:219:5:219:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:219:5:219:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:221:10:221:15 | call to s27 | semmle.label | call to s27 | +| semantics.rb:221:10:221:15 | call to s27 | semmle.label | call to s27 | +| semantics.rb:221:14:221:14 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:221:14:221:14 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:221:14:221:14 | h [element 2] : | semmle.label | h [element 2] : | +| semantics.rb:221:14:221:14 | h [element 2] : | semmle.label | h [element 2] : | +| semantics.rb:221:14:221:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:221:14:221:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:235:9:235:18 | call to source : | semmle.label | call to source : | +| semantics.rb:235:9:235:18 | call to source : | semmle.label | call to source : | +| semantics.rb:236:9:236:18 | call to source : | semmle.label | call to source : | +| semantics.rb:236:9:236:18 | call to source : | semmle.label | call to source : | +| semantics.rb:240:5:240:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:240:5:240:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:241:5:241:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:241:5:241:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:241:5:241:5 | [post] h [element 2] : | semmle.label | [post] h [element 2] : | +| semantics.rb:241:5:241:5 | [post] h [element 2] : | semmle.label | [post] h [element 2] : | +| semantics.rb:241:5:241:5 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:241:5:241:5 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:244:10:244:15 | call to s29 | semmle.label | call to s29 | +| semantics.rb:244:10:244:15 | call to s29 | semmle.label | call to s29 | +| semantics.rb:244:14:244:14 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:244:14:244:14 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:244:14:244:14 | h [element 2] : | semmle.label | h [element 2] : | +| semantics.rb:244:14:244:14 | h [element 2] : | semmle.label | h [element 2] : | +| semantics.rb:248:9:248:18 | call to source : | semmle.label | call to source : | +| semantics.rb:248:9:248:18 | call to source : | semmle.label | call to source : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semmle.label | call to s30 [element] : | +| semantics.rb:249:9:249:14 | call to s30 [element] : | semmle.label | call to s30 [element] : | +| semantics.rb:249:13:249:13 | a : | semmle.label | a : | +| semantics.rb:249:13:249:13 | a : | semmle.label | a : | +| semantics.rb:250:10:250:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:250:10:250:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:250:10:250:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:250:10:250:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:251:10:251:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:251:10:251:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:251:10:251:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:251:10:251:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:252:10:252:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:252:10:252:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:252:10:252:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:252:10:252:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:253:10:253:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:253:10:253:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:253:10:253:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:253:10:253:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:257:5:257:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:257:5:257:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:257:15:257:25 | call to source : | semmle.label | call to source : | +| semantics.rb:257:15:257:25 | call to source : | semmle.label | call to source : | +| semantics.rb:258:5:258:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:258:5:258:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:258:5:258:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:258:5:258:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:259:5:259:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:259:5:259:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:259:5:259:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:259:5:259:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:260:5:260:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:260:5:260:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:260:12:260:22 | call to source : | semmle.label | call to source : | +| semantics.rb:260:12:260:22 | call to source : | semmle.label | call to source : | +| semantics.rb:262:10:262:15 | call to s31 | semmle.label | call to s31 | +| semantics.rb:262:10:262:15 | call to s31 | semmle.label | call to s31 | +| semantics.rb:262:14:262:14 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:262:14:262:14 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:262:14:262:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:262:14:262:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:267:5:267:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:267:5:267:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:267:16:267:26 | call to source : | semmle.label | call to source : | +| semantics.rb:267:16:267:26 | call to source : | semmle.label | call to source : | +| semantics.rb:268:5:268:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:268:5:268:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:268:5:268:5 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:268:5:268:5 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:269:5:269:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:269:5:269:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:269:5:269:5 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:269:5:269:5 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:270:5:270:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:270:5:270:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:270:12:270:22 | call to source : | semmle.label | call to source : | +| semantics.rb:270:12:270:22 | call to source : | semmle.label | call to source : | +| semantics.rb:272:10:272:15 | call to s32 | semmle.label | call to s32 | +| semantics.rb:272:10:272:15 | call to s32 | semmle.label | call to s32 | +| semantics.rb:272:14:272:14 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:272:14:272:14 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:272:14:272:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:272:14:272:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:280:5:280:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:280:5:280:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:280:12:280:22 | call to source : | semmle.label | call to source : | +| semantics.rb:280:12:280:22 | call to source : | semmle.label | call to source : | +| semantics.rb:281:5:281:5 | [post] h [element nil] : | semmle.label | [post] h [element nil] : | +| semantics.rb:281:5:281:5 | [post] h [element nil] : | semmle.label | [post] h [element nil] : | +| semantics.rb:281:5:281:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:281:5:281:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:281:5:281:5 | h [element] : | semmle.label | h [element] : | +| semantics.rb:281:5:281:5 | h [element] : | semmle.label | h [element] : | +| semantics.rb:281:14:281:24 | call to source : | semmle.label | call to source : | +| semantics.rb:281:14:281:24 | call to source : | semmle.label | call to source : | +| semantics.rb:282:5:282:5 | [post] h [element nil] : | semmle.label | [post] h [element nil] : | +| semantics.rb:282:5:282:5 | [post] h [element nil] : | semmle.label | [post] h [element nil] : | +| semantics.rb:282:5:282:5 | [post] h [element true] : | semmle.label | [post] h [element true] : | +| semantics.rb:282:5:282:5 | [post] h [element true] : | semmle.label | [post] h [element true] : | +| semantics.rb:282:5:282:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:282:5:282:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:282:5:282:5 | h [element nil] : | semmle.label | h [element nil] : | +| semantics.rb:282:5:282:5 | h [element nil] : | semmle.label | h [element nil] : | +| semantics.rb:282:5:282:5 | h [element] : | semmle.label | h [element] : | +| semantics.rb:282:5:282:5 | h [element] : | semmle.label | h [element] : | +| semantics.rb:282:15:282:25 | call to source : | semmle.label | call to source : | +| semantics.rb:282:15:282:25 | call to source : | semmle.label | call to source : | +| semantics.rb:283:5:283:5 | [post] h [element false] : | semmle.label | [post] h [element false] : | +| semantics.rb:283:5:283:5 | [post] h [element false] : | semmle.label | [post] h [element false] : | +| semantics.rb:283:5:283:5 | [post] h [element nil] : | semmle.label | [post] h [element nil] : | +| semantics.rb:283:5:283:5 | [post] h [element nil] : | semmle.label | [post] h [element nil] : | +| semantics.rb:283:5:283:5 | [post] h [element true] : | semmle.label | [post] h [element true] : | +| semantics.rb:283:5:283:5 | [post] h [element true] : | semmle.label | [post] h [element true] : | +| semantics.rb:283:5:283:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:283:5:283:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:283:5:283:5 | h [element nil] : | semmle.label | h [element nil] : | +| semantics.rb:283:5:283:5 | h [element nil] : | semmle.label | h [element nil] : | +| semantics.rb:283:5:283:5 | h [element true] : | semmle.label | h [element true] : | +| semantics.rb:283:5:283:5 | h [element true] : | semmle.label | h [element true] : | +| semantics.rb:283:5:283:5 | h [element] : | semmle.label | h [element] : | +| semantics.rb:283:5:283:5 | h [element] : | semmle.label | h [element] : | +| semantics.rb:283:16:283:26 | call to source : | semmle.label | call to source : | +| semantics.rb:283:16:283:26 | call to source : | semmle.label | call to source : | +| semantics.rb:285:10:285:15 | call to s33 | semmle.label | call to s33 | +| semantics.rb:285:10:285:15 | call to s33 | semmle.label | call to s33 | +| semantics.rb:285:14:285:14 | h [element false] : | semmle.label | h [element false] : | +| semantics.rb:285:14:285:14 | h [element false] : | semmle.label | h [element false] : | +| semantics.rb:285:14:285:14 | h [element nil] : | semmle.label | h [element nil] : | +| semantics.rb:285:14:285:14 | h [element nil] : | semmle.label | h [element nil] : | +| semantics.rb:285:14:285:14 | h [element true] : | semmle.label | h [element true] : | +| semantics.rb:285:14:285:14 | h [element true] : | semmle.label | h [element true] : | +| semantics.rb:285:14:285:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:285:14:285:14 | h [element] : | semmle.label | h [element] : | +| semantics.rb:289:9:289:24 | call to s35 [element :foo] : | semmle.label | call to s35 [element :foo] : | +| semantics.rb:289:9:289:24 | call to s35 [element :foo] : | semmle.label | call to s35 [element :foo] : | +| semantics.rb:289:13:289:23 | call to source : | semmle.label | call to source : | +| semantics.rb:289:13:289:23 | call to source : | semmle.label | call to source : | +| semantics.rb:290:10:290:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:290:10:290:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:290:10:290:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:290:10:290:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:292:10:292:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:292:10:292:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:292:10:292:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:292:10:292:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:296:9:296:24 | call to s36 [element foo] : | semmle.label | call to s36 [element foo] : | +| semantics.rb:296:9:296:24 | call to s36 [element foo] : | semmle.label | call to s36 [element foo] : | +| semantics.rb:296:13:296:23 | call to source : | semmle.label | call to source : | +| semantics.rb:296:13:296:23 | call to source : | semmle.label | call to source : | +| semantics.rb:298:10:298:10 | x [element foo] : | semmle.label | x [element foo] : | +| semantics.rb:298:10:298:10 | x [element foo] : | semmle.label | x [element foo] : | +| semantics.rb:298:10:298:17 | ...[...] | semmle.label | ...[...] | +| semantics.rb:298:10:298:17 | ...[...] | semmle.label | ...[...] | +| semantics.rb:300:10:300:10 | x [element foo] : | semmle.label | x [element foo] : | +| semantics.rb:300:10:300:10 | x [element foo] : | semmle.label | x [element foo] : | +| semantics.rb:300:10:300:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:300:10:300:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:304:9:304:24 | call to s37 [element true] : | semmle.label | call to s37 [element true] : | +| semantics.rb:304:9:304:24 | call to s37 [element true] : | semmle.label | call to s37 [element true] : | +| semantics.rb:304:13:304:23 | call to source : | semmle.label | call to source : | +| semantics.rb:304:13:304:23 | call to source : | semmle.label | call to source : | +| semantics.rb:306:10:306:10 | x [element true] : | semmle.label | x [element true] : | +| semantics.rb:306:10:306:10 | x [element true] : | semmle.label | x [element true] : | +| semantics.rb:306:10:306:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:306:10:306:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:308:10:308:10 | x [element true] : | semmle.label | x [element true] : | +| semantics.rb:308:10:308:10 | x [element true] : | semmle.label | x [element true] : | +| semantics.rb:308:10:308:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:308:10:308:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:312:5:312:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:312:5:312:5 | [post] h [element foo] : | semmle.label | [post] h [element foo] : | +| semantics.rb:312:16:312:26 | call to source : | semmle.label | call to source : | +| semantics.rb:312:16:312:26 | call to source : | semmle.label | call to source : | +| semantics.rb:315:10:315:15 | call to s38 | semmle.label | call to s38 | +| semantics.rb:315:10:315:15 | call to s38 | semmle.label | call to s38 | +| semantics.rb:315:14:315:14 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:315:14:315:14 | h [element foo] : | semmle.label | h [element foo] : | +| semantics.rb:319:9:319:24 | call to s39 [element :foo] : | semmle.label | call to s39 [element :foo] : | +| semantics.rb:319:9:319:24 | call to s39 [element :foo] : | semmle.label | call to s39 [element :foo] : | +| semantics.rb:319:13:319:23 | call to source : | semmle.label | call to source : | +| semantics.rb:319:13:319:23 | call to source : | semmle.label | call to source : | +| semantics.rb:321:10:321:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:321:10:321:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:321:10:321:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:321:10:321:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:322:10:322:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:322:10:322:10 | x [element :foo] : | semmle.label | x [element :foo] : | +| semantics.rb:322:10:322:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:322:10:322:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:327:5:327:5 | [post] x [@foo] : | semmle.label | [post] x [@foo] : | +| semantics.rb:327:5:327:5 | [post] x [@foo] : | semmle.label | [post] x [@foo] : | +| semantics.rb:327:13:327:23 | call to source : | semmle.label | call to source : | +| semantics.rb:327:13:327:23 | call to source : | semmle.label | call to source : | +| semantics.rb:329:10:329:15 | call to s40 | semmle.label | call to s40 | +| semantics.rb:329:10:329:15 | call to s40 | semmle.label | call to s40 | +| semantics.rb:329:14:329:14 | x [@foo] : | semmle.label | x [@foo] : | +| semantics.rb:329:14:329:14 | x [@foo] : | semmle.label | x [@foo] : | +| semantics.rb:333:9:333:24 | call to s41 [@foo] : | semmle.label | call to s41 [@foo] : | +| semantics.rb:333:9:333:24 | call to s41 [@foo] : | semmle.label | call to s41 [@foo] : | +| semantics.rb:333:13:333:23 | call to source : | semmle.label | call to source : | +| semantics.rb:333:13:333:23 | call to source : | semmle.label | call to source : | +| semantics.rb:334:10:334:10 | x [@foo] : | semmle.label | x [@foo] : | +| semantics.rb:334:10:334:10 | x [@foo] : | semmle.label | x [@foo] : | +| semantics.rb:334:10:334:14 | call to foo | semmle.label | call to foo | +| semantics.rb:334:10:334:14 | call to foo | semmle.label | call to foo | +| semantics.rb:339:5:339:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:339:5:339:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:339:12:339:22 | call to source : | semmle.label | call to source : | +| semantics.rb:339:12:339:22 | call to source : | semmle.label | call to source : | +| semantics.rb:340:5:340:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:340:5:340:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:340:12:340:22 | call to source : | semmle.label | call to source : | +| semantics.rb:340:12:340:22 | call to source : | semmle.label | call to source : | +| semantics.rb:342:9:342:14 | call to s42 [element 0] : | semmle.label | call to s42 [element 0] : | +| semantics.rb:342:9:342:14 | call to s42 [element 0] : | semmle.label | call to s42 [element 0] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semmle.label | call to s42 [element] : | +| semantics.rb:342:9:342:14 | call to s42 [element] : | semmle.label | call to s42 [element] : | +| semantics.rb:342:13:342:13 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:342:13:342:13 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:342:13:342:13 | h [element] : | semmle.label | h [element] : | +| semantics.rb:342:13:342:13 | h [element] : | semmle.label | h [element] : | +| semantics.rb:344:10:344:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:344:10:344:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:344:10:344:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:344:10:344:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:344:10:344:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:344:10:344:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:345:10:345:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:345:10:345:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:345:10:345:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:345:10:345:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:346:10:346:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:346:10:346:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:346:10:346:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:346:10:346:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:346:10:346:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:346:10:346:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:350:5:350:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:350:5:350:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:350:12:350:22 | call to source : | semmle.label | call to source : | +| semantics.rb:350:12:350:22 | call to source : | semmle.label | call to source : | +| semantics.rb:353:9:353:14 | call to s43 [element 0] : | semmle.label | call to s43 [element 0] : | +| semantics.rb:353:9:353:14 | call to s43 [element 0] : | semmle.label | call to s43 [element 0] : | +| semantics.rb:353:13:353:13 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:353:13:353:13 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:355:10:355:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:355:10:355:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:355:10:355:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:355:10:355:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:357:10:357:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:357:10:357:10 | x [element 0] : | semmle.label | x [element 0] : | +| semantics.rb:357:10:357:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:357:10:357:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:362:5:362:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:362:5:362:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:362:12:362:22 | call to source : | semmle.label | call to source : | +| semantics.rb:362:12:362:22 | call to source : | semmle.label | call to source : | +| semantics.rb:365:9:365:9 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:365:9:365:9 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:365:9:365:9 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:365:9:365:9 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:368:10:368:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:368:10:368:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:368:10:368:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:368:10:368:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:369:10:369:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:369:10:369:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:369:10:369:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:369:10:369:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:373:5:373:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:373:5:373:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:373:12:373:22 | call to source : | semmle.label | call to source : | +| semantics.rb:373:12:373:22 | call to source : | semmle.label | call to source : | +| semantics.rb:374:5:374:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:374:5:374:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:374:5:374:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:374:5:374:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:374:12:374:22 | call to source : | semmle.label | call to source : | +| semantics.rb:374:12:374:22 | call to source : | semmle.label | call to source : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:375:5:375:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:375:12:375:22 | call to source : | semmle.label | call to source : | +| semantics.rb:375:12:375:22 | call to source : | semmle.label | call to source : | +| semantics.rb:377:10:377:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:377:10:377:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:377:10:377:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:377:10:377:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:377:10:377:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:377:10:377:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:378:10:378:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:378:10:378:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:378:10:378:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:378:10:378:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:378:10:378:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:378:10:378:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:379:10:379:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:379:10:379:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:379:10:379:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:379:10:379:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:379:10:379:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:379:10:379:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:379:10:379:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:379:10:379:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:381:9:381:9 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:381:9:381:9 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:381:9:381:9 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:381:9:381:9 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:381:9:381:9 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:381:9:381:9 | h [element] : | semmle.label | h [element] : | +| semantics.rb:381:9:381:9 | h [element] : | semmle.label | h [element] : | +| semantics.rb:383:10:383:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:383:10:383:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:383:10:383:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:383:10:383:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:384:10:384:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:384:10:384:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:384:10:384:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:384:10:384:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:384:10:384:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:384:10:384:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:385:10:385:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:385:10:385:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:385:10:385:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:385:10:385:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:385:10:385:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:385:10:385:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:389:5:389:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:389:5:389:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:389:12:389:22 | call to source : | semmle.label | call to source : | +| semantics.rb:389:12:389:22 | call to source : | semmle.label | call to source : | +| semantics.rb:390:5:390:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 0] : | semmle.label | [post] h [element 0] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:390:5:390:5 | [post] h [element 1] : | semmle.label | [post] h [element 1] : | +| semantics.rb:390:5:390:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:390:5:390:5 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:390:12:390:22 | call to source : | semmle.label | call to source : | +| semantics.rb:390:12:390:22 | call to source : | semmle.label | call to source : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:391:5:391:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:391:12:391:22 | call to source : | semmle.label | call to source : | +| semantics.rb:391:12:391:22 | call to source : | semmle.label | call to source : | +| semantics.rb:393:10:393:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:393:10:393:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:393:10:393:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:393:10:393:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:393:10:393:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:393:10:393:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:394:10:394:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:394:10:394:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:394:10:394:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:394:10:394:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:394:10:394:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:394:10:394:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:395:10:395:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:395:10:395:10 | h [element 0] : | semmle.label | h [element 0] : | +| semantics.rb:395:10:395:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:395:10:395:10 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:395:10:395:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:395:10:395:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:395:10:395:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:395:10:395:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:397:9:397:14 | call to s46 [element 1] : | semmle.label | call to s46 [element 1] : | +| semantics.rb:397:9:397:14 | call to s46 [element 1] : | semmle.label | call to s46 [element 1] : | +| semantics.rb:397:13:397:13 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:397:13:397:13 | h [element 1] : | semmle.label | h [element 1] : | +| semantics.rb:400:10:400:10 | x [element 1] : | semmle.label | x [element 1] : | +| semantics.rb:400:10:400:10 | x [element 1] : | semmle.label | x [element 1] : | +| semantics.rb:400:10:400:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:400:10:400:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:401:10:401:10 | x [element 1] : | semmle.label | x [element 1] : | +| semantics.rb:401:10:401:10 | x [element 1] : | semmle.label | x [element 1] : | +| semantics.rb:401:10:401:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:401:10:401:13 | ...[...] | semmle.label | ...[...] | +| semantics.rb:405:5:405:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:405:5:405:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:405:15:405:25 | call to source : | semmle.label | call to source : | +| semantics.rb:405:15:405:25 | call to source : | semmle.label | call to source : | +| semantics.rb:406:5:406:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:406:5:406:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:406:5:406:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:406:5:406:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:406:5:406:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:406:5:406:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:406:15:406:25 | call to source : | semmle.label | call to source : | +| semantics.rb:406:15:406:25 | call to source : | semmle.label | call to source : | +| semantics.rb:407:5:407:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:407:5:407:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:407:12:407:22 | call to source : | semmle.label | call to source : | +| semantics.rb:407:12:407:22 | call to source : | semmle.label | call to source : | +| semantics.rb:409:10:409:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:409:10:409:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:409:10:409:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:409:10:409:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:409:10:409:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:409:10:409:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:410:10:410:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:410:10:410:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:410:10:410:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:410:10:410:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:410:10:410:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:410:10:410:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:412:9:412:14 | call to s47 [element :bar] : | semmle.label | call to s47 [element :bar] : | +| semantics.rb:412:9:412:14 | call to s47 [element :bar] : | semmle.label | call to s47 [element :bar] : | +| semantics.rb:412:13:412:13 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:412:13:412:13 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:415:10:415:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:415:10:415:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:415:10:415:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:415:10:415:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:419:5:419:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:419:5:419:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:419:15:419:25 | call to source : | semmle.label | call to source : | +| semantics.rb:419:15:419:25 | call to source : | semmle.label | call to source : | +| semantics.rb:420:5:420:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:420:5:420:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:420:5:420:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:420:5:420:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:420:5:420:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:420:5:420:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:420:15:420:25 | call to source : | semmle.label | call to source : | +| semantics.rb:420:15:420:25 | call to source : | semmle.label | call to source : | +| semantics.rb:421:5:421:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:421:5:421:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:421:12:421:22 | call to source : | semmle.label | call to source : | +| semantics.rb:421:12:421:22 | call to source : | semmle.label | call to source : | +| semantics.rb:423:10:423:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:423:10:423:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:423:10:423:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:423:10:423:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:423:10:423:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:423:10:423:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:424:10:424:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:424:10:424:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:424:10:424:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:424:10:424:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:424:10:424:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:424:10:424:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:426:9:426:14 | call to s48 [element :bar] : | semmle.label | call to s48 [element :bar] : | +| semantics.rb:426:9:426:14 | call to s48 [element :bar] : | semmle.label | call to s48 [element :bar] : | +| semantics.rb:426:13:426:13 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:426:13:426:13 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:429:10:429:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:429:10:429:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:429:10:429:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:429:10:429:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:433:5:433:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:433:5:433:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:433:15:433:25 | call to source : | semmle.label | call to source : | +| semantics.rb:433:15:433:25 | call to source : | semmle.label | call to source : | +| semantics.rb:434:5:434:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:434:5:434:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:434:5:434:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:434:5:434:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:434:5:434:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:434:5:434:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:434:15:434:25 | call to source : | semmle.label | call to source : | +| semantics.rb:434:15:434:25 | call to source : | semmle.label | call to source : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:435:5:435:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:435:12:435:22 | call to source : | semmle.label | call to source : | +| semantics.rb:435:12:435:22 | call to source : | semmle.label | call to source : | +| semantics.rb:437:10:437:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:437:10:437:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:437:10:437:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:437:10:437:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:437:10:437:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:437:10:437:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:438:10:438:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:438:10:438:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:438:10:438:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:438:10:438:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:438:10:438:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:438:10:438:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:440:9:440:14 | call to s49 [element :bar] : | semmle.label | call to s49 [element :bar] : | +| semantics.rb:440:9:440:14 | call to s49 [element :bar] : | semmle.label | call to s49 [element :bar] : | +| semantics.rb:440:9:440:14 | call to s49 [element] : | semmle.label | call to s49 [element] : | +| semantics.rb:440:9:440:14 | call to s49 [element] : | semmle.label | call to s49 [element] : | +| semantics.rb:440:13:440:13 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:440:13:440:13 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:440:13:440:13 | h [element] : | semmle.label | h [element] : | +| semantics.rb:440:13:440:13 | h [element] : | semmle.label | h [element] : | +| semantics.rb:442:10:442:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:442:10:442:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:442:10:442:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:442:10:442:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:443:10:443:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:443:10:443:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:443:10:443:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:443:10:443:10 | x [element] : | semmle.label | x [element] : | +| semantics.rb:443:10:443:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:443:10:443:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:447:5:447:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:447:5:447:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:447:15:447:25 | call to source : | semmle.label | call to source : | +| semantics.rb:447:15:447:25 | call to source : | semmle.label | call to source : | +| semantics.rb:448:5:448:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:448:5:448:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:448:5:448:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:448:5:448:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:448:5:448:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:448:5:448:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:448:15:448:25 | call to source : | semmle.label | call to source : | +| semantics.rb:448:15:448:25 | call to source : | semmle.label | call to source : | +| semantics.rb:449:5:449:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:449:5:449:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:449:12:449:22 | call to source : | semmle.label | call to source : | +| semantics.rb:449:12:449:22 | call to source : | semmle.label | call to source : | +| semantics.rb:451:10:451:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:451:10:451:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:451:10:451:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:451:10:451:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:451:10:451:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:451:10:451:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:452:10:452:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:452:10:452:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:452:10:452:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:452:10:452:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:452:10:452:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:452:10:452:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:454:9:454:9 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:454:9:454:9 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:454:9:454:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:454:9:454:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:457:10:457:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:457:10:457:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:457:10:457:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:457:10:457:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:461:5:461:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:461:5:461:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:461:15:461:25 | call to source : | semmle.label | call to source : | +| semantics.rb:461:15:461:25 | call to source : | semmle.label | call to source : | +| semantics.rb:462:5:462:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:462:5:462:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:462:5:462:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:462:5:462:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:462:5:462:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:462:5:462:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:462:15:462:25 | call to source : | semmle.label | call to source : | +| semantics.rb:462:15:462:25 | call to source : | semmle.label | call to source : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:463:5:463:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:463:12:463:22 | call to source : | semmle.label | call to source : | +| semantics.rb:463:12:463:22 | call to source : | semmle.label | call to source : | +| semantics.rb:465:10:465:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:465:10:465:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:465:10:465:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:465:10:465:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:465:10:465:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:465:10:465:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:466:10:466:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:466:10:466:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:466:10:466:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:466:10:466:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:466:10:466:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:466:10:466:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:468:9:468:9 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:468:9:468:9 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:468:9:468:9 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:468:9:468:9 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:468:9:468:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:468:9:468:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:468:9:468:9 | h [element] : | semmle.label | h [element] : | +| semantics.rb:468:9:468:9 | h [element] : | semmle.label | h [element] : | +| semantics.rb:470:10:470:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:470:10:470:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:470:10:470:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:470:10:470:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:471:10:471:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:471:10:471:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:471:10:471:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:471:10:471:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:471:10:471:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:471:10:471:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:475:5:475:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:475:5:475:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:475:15:475:25 | call to source : | semmle.label | call to source : | +| semantics.rb:475:15:475:25 | call to source : | semmle.label | call to source : | +| semantics.rb:476:5:476:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:476:5:476:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:476:5:476:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:476:5:476:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:476:5:476:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:476:5:476:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:476:15:476:25 | call to source : | semmle.label | call to source : | +| semantics.rb:476:15:476:25 | call to source : | semmle.label | call to source : | +| semantics.rb:477:5:477:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:477:5:477:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:477:12:477:22 | call to source : | semmle.label | call to source : | +| semantics.rb:477:12:477:22 | call to source : | semmle.label | call to source : | +| semantics.rb:479:10:479:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:479:10:479:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:479:10:479:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:479:10:479:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:479:10:479:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:479:10:479:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:480:10:480:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:480:10:480:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:480:10:480:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:480:10:480:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:480:10:480:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:480:10:480:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:482:5:482:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:482:5:482:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:482:5:482:5 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:482:5:482:5 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:485:10:485:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:485:10:485:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:485:10:485:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:485:10:485:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:489:5:489:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:489:5:489:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:489:15:489:25 | call to source : | semmle.label | call to source : | +| semantics.rb:489:15:489:25 | call to source : | semmle.label | call to source : | +| semantics.rb:490:5:490:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:490:5:490:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:490:5:490:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:490:5:490:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:490:5:490:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:490:5:490:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:490:15:490:25 | call to source : | semmle.label | call to source : | +| semantics.rb:490:15:490:25 | call to source : | semmle.label | call to source : | +| semantics.rb:491:5:491:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:491:5:491:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:491:12:491:22 | call to source : | semmle.label | call to source : | +| semantics.rb:491:12:491:22 | call to source : | semmle.label | call to source : | +| semantics.rb:493:10:493:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:493:10:493:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:493:10:493:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:493:10:493:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:493:10:493:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:493:10:493:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:494:10:494:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:494:10:494:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:494:10:494:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:494:10:494:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:494:10:494:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:494:10:494:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:496:9:496:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:496:9:496:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:496:9:496:15 | call to s53 [element :bar] : | semmle.label | call to s53 [element :bar] : | +| semantics.rb:496:9:496:15 | call to s53 [element :bar] : | semmle.label | call to s53 [element :bar] : | +| semantics.rb:499:10:499:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:499:10:499:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:499:10:499:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:499:10:499:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:501:10:501:20 | call to source : | semmle.label | call to source : | +| semantics.rb:501:10:501:20 | call to source : | semmle.label | call to source : | +| semantics.rb:501:10:501:26 | call to s53 | semmle.label | call to s53 | +| semantics.rb:501:10:501:26 | call to s53 | semmle.label | call to s53 | +| semantics.rb:505:5:505:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:505:5:505:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:505:15:505:25 | call to source : | semmle.label | call to source : | +| semantics.rb:505:15:505:25 | call to source : | semmle.label | call to source : | +| semantics.rb:506:5:506:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:506:5:506:5 | [post] h [element :bar] : | semmle.label | [post] h [element :bar] : | +| semantics.rb:506:5:506:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:506:5:506:5 | [post] h [element :foo] : | semmle.label | [post] h [element :foo] : | +| semantics.rb:506:5:506:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:506:5:506:5 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:506:15:506:25 | call to source : | semmle.label | call to source : | +| semantics.rb:506:15:506:25 | call to source : | semmle.label | call to source : | +| semantics.rb:507:5:507:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:507:5:507:5 | [post] h [element] : | semmle.label | [post] h [element] : | +| semantics.rb:507:12:507:22 | call to source : | semmle.label | call to source : | +| semantics.rb:507:12:507:22 | call to source : | semmle.label | call to source : | +| semantics.rb:509:10:509:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:509:10:509:10 | h [element :foo] : | semmle.label | h [element :foo] : | +| semantics.rb:509:10:509:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:509:10:509:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:509:10:509:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:509:10:509:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:510:10:510:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:510:10:510:10 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:510:10:510:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:510:10:510:10 | h [element] : | semmle.label | h [element] : | +| semantics.rb:510:10:510:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:510:10:510:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:512:9:512:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:512:9:512:9 | h [element :bar] : | semmle.label | h [element :bar] : | +| semantics.rb:512:9:512:15 | call to s54 [element :bar] : | semmle.label | call to s54 [element :bar] : | +| semantics.rb:512:9:512:15 | call to s54 [element :bar] : | semmle.label | call to s54 [element :bar] : | +| semantics.rb:515:10:515:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:515:10:515:10 | x [element :bar] : | semmle.label | x [element :bar] : | +| semantics.rb:515:10:515:16 | ...[...] | semmle.label | ...[...] | +| semantics.rb:515:10:515:16 | ...[...] | semmle.label | ...[...] | +subpaths diff --git a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.ql b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.ql new file mode 100644 index 000000000000..8ede7ba834ed --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.ql @@ -0,0 +1,587 @@ +/** + * @kind path-problem + * This file tests that flow summaries behave as described in `ql/docs/flow-summaries.md`. + */ + +import codeql.ruby.AST +import TestUtilities.InlineFlowTest +import PathGraph +private import codeql.ruby.dataflow.FlowSummary + +/** + * A convenience class for defining value (c.f. taint) flow summaries. + */ +bindingset[this] +abstract private class Summary extends SimpleSummarizedCallable { + bindingset[this] + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + this.propagates(input, output) and preservesValue = true + } + + abstract predicate propagates(string input, string output); +} + +/** + * `Argument[self]` (input) + */ +private class S1 extends Summary { + S1() { this = "s1" } + + override predicate propagates(string input, string output) { + input = "Argument[self]" and output = "ReturnValue" + } +} + +/** + * `Argument[self]` (output) + */ +private class S2 extends Summary { + S2() { this = "s2" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[self]" + } +} + +/** + * `Argument[]` (input, output) + */ +private class S3 extends Summary { + S3() { this = "s3" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[1]" + } +} + +/** + * `Argument[..]` (input) + */ +private class S4 extends Summary { + S4() { this = "s4" } + + override predicate propagates(string input, string output) { + input = "Argument[1..]" and output = "ReturnValue" + } +} + +/** + * `Argument[..]` (output) + */ +private class S5 extends Summary { + S5() { this = "s5" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[2..]" + } +} + +/** + * `Argument[]` (input) + */ +private class S6 extends Summary { + S6() { this = "s6" } + + override predicate propagates(string input, string output) { + input = "Argument[foo:]" and output = "ReturnValue" + } +} + +/** + * `Argument[]` (output) + */ +private class S7 extends Summary { + S7() { this = "s7" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[foo:]" + } +} + +/** + * `Argument[block]` (input) + */ +private class S8 extends Summary { + S8() { this = "s8" } + + override predicate propagates(string input, string output) { + input = "Argument[block].ReturnValue" and output = "ReturnValue" + } +} + +/** + * `Argument[block]` (output) + */ +private class S9 extends Summary { + S9() { this = "s9" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[block].Parameter[0]" + } +} + +/** + * `Argument[any]` (input) 1 + */ +private class S10 extends Summary { + S10() { this = "s10" } + + override predicate propagates(string input, string output) { + input = "Argument[any]" and output = "ReturnValue" + } +} + +/** + * `Argument[any]` (input) 2 + * This tests that access paths using `Argument[any]` do not match blocks. + * Test 10 contains an edge case example where blocks are matched, but this does + * not appear to work in general. + */ +private class S11 extends Summary { + S11() { this = "s11" } + + override predicate propagates(string input, string output) { + input = "Argument[any].ReturnValue" and output = "ReturnValue" + } +} + +/** + * `Argument[any]` (output) + */ +private class S12 extends Summary { + S12() { this = "s12" } + + override predicate propagates(string input, string output) { + input = "Argument[self]" and output = "Argument[any]" + } +} + +/** + * `Argument[any-named]` (input) + */ +private class S13 extends Summary { + S13() { this = "s13" } + + override predicate propagates(string input, string output) { + input = "Argument[any-named]" and output = "ReturnValue" + } +} + +/** + * `Argument[any-named]` (output) + */ +private class S14 extends Summary { + S14() { this = "s14" } + + override predicate propagates(string input, string output) { + input = "Argument[self]" and output = "Argument[any-named]" + } +} + +/** + * `Argument[hash-splat]` (input) 1 + */ +private class S15 extends Summary { + S15() { this = "s15" } + + override predicate propagates(string input, string output) { + input = "Argument[hash-splat]" and output = "ReturnValue" + } +} + +/** + * `Argument[hash-splat]` (input) 2 + */ +private class S16 extends Summary { + S16() { this = "s16" } + + override predicate propagates(string input, string output) { + input = "Argument[hash-splat].Element[any]" and output = "ReturnValue" + } +} + +/** + * `Argument[hash-splat]` (output) 1 + */ +private class S17 extends Summary { + S17() { this = "s17" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[hash-splat]" + } +} + +/** + * `Argument[hash-splat]` (output) 2 + */ +private class S18 extends Summary { + S18() { this = "s18" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "Argument[hash-splat].Element[:foo]" + } +} + +/** `Element[?]` (input) */ +private class S19 extends Summary { + S19() { this = "s19" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[?]" and output = "ReturnValue" + } +} + +/** `Element[?]` (output) */ +private class S20 extends Summary { + S20() { this = "s20" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[?]" + } +} + +/** `Element[any]` (input) */ +private class S21 extends Summary { + S21() { this = "s21" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[any]" and output = "ReturnValue" + } +} + +/** `Element[any]` (output) */ +private class S22 extends Summary { + S22() { this = "s22" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[any]" + } +} + +/** `Element[]` (input) */ +private class S23 extends Summary { + S23() { this = "s23" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[0]" and output = "ReturnValue" + } +} + +/** `Element[]` (output) */ +private class S24 extends Summary { + S24() { this = "s24" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[0]" + } +} + +/** `Element[!]` (input) */ +private class S25 extends Summary { + S25() { this = "s25" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[0!]" and output = "ReturnValue" + } +} + +/** `Element[!]` (output) */ +private class S26 extends Summary { + S26() { this = "s26" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[0!]" + } +} + +/** `Element[..]` (input) */ +private class S27 extends Summary { + S27() { this = "s27" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[1..]" and output = "ReturnValue" + } +} + +/** `Element[..]` (output) */ +private class S28 extends Summary { + S28() { this = "s28" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[1..]" + } +} + +/** `Element[..!]` (input) */ +private class S29 extends Summary { + S29() { this = "s29" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[1..!]" and output = "ReturnValue" + } +} + +/** `Element[..!]` (output) */ +private class S30 extends Summary { + S30() { this = "s30" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[1..!]" + } +} + +/** + * `Element[]` (input) 1 + * + * In general, the key format must match the output of `ConstantValue::serialize/0`. + * For example, symbol keys must be prefixed by `:`. + */ +private class S31 extends Summary { + S31() { this = "s31" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[:foo]" and output = "ReturnValue" + } +} + +/** + * `Element[]` (input) 2 + * + * String keys must be wrapped double quotes. + */ +private class S32 extends Summary { + S32() { this = "s32" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[\"foo\"]" and output = "ReturnValue" + } +} + +/** + * `Element[]` (input) 3 + * + * `nil`, `true` and `false` keys can be written verbatim. + */ +private class S33 extends Summary { + S33() { this = "s33" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[nil,true,false]" and output = "ReturnValue" + } +} + +/** `Element[]` (output) 1 */ +private class S35 extends Summary { + S35() { this = "s35" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[:foo]" + } +} + +/** `Element[]` (output) 2 */ +private class S36 extends Summary { + S36() { this = "s36" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[\"foo\"]" + } +} + +/** `Element[]` (output) 3 */ +private class S37 extends Summary { + S37() { this = "s37" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[true]" + } +} + +/** + * `Element[!]` (input) + */ +private class S38 extends Summary { + S38() { this = "s38" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Element[\"foo\"!]" and output = "ReturnValue" + } +} + +/** + * `Element[!]` (output) + */ +private class S39 extends Summary { + S39() { this = "s39" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Element[:foo!]" + } +} + +/** + * `Field[@]` (input) + */ +private class S40 extends Summary { + S40() { this = "s40" } + + override predicate propagates(string input, string output) { + input = "Argument[0].Field[@foo]" and output = "ReturnValue" + } +} + +/** + * `Field[@]` (output) + */ +private class S41 extends Summary { + S41() { this = "s41" } + + override predicate propagates(string input, string output) { + input = "Argument[0]" and output = "ReturnValue.Field[@foo]" + } +} + +/** + * `WithElement` + */ +private class S42 extends Summary { + S42() { this = "s42" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithElement[0]" and output = "ReturnValue" + } +} + +/** + * `WithElement[!]` + */ +private class S43 extends Summary { + S43() { this = "s43" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithElement[0!]" and output = "ReturnValue" + } +} + +/** + * `WithoutElement` 1 + */ +private class S44 extends Summary { + S44() { this = "s44" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[0]" and output = "Argument[0]" + } +} + +/** + * `WithoutElement` 2 + */ +private class S45 extends Summary { + S45() { this = "s45" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[0!]" and output = "Argument[0]" + } +} + +/** + * `WithoutElement` 3 + */ +private class S46 extends Summary { + S46() { this = "s46" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[0]" and output = "ReturnValue" + } +} + +/** + * `WithoutElement` 4 + */ +private class S47 extends Summary { + S47() { this = "s47" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[:foo].WithElement[any]" and output = "ReturnValue" + } +} + +/** + * `WithoutElement` 5 + */ +private class S48 extends Summary { + S48() { this = "s48" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[:foo]" and output = "ReturnValue" + } +} + +/** + * `WithoutElement` 6 + */ +private class S49 extends Summary { + S49() { this = "s49" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[:foo!]" and output = "ReturnValue" + } +} + +/** + * `WithoutElement` 7 + */ +private class S50 extends Summary { + S50() { this = "s50" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[:foo]" and output = "Argument[0]" + } +} + +/** + * `WithoutElement` 8 + */ +private class S51 extends Summary { + S51() { this = "s51" } + + override predicate propagates(string input, string output) { + input = "Argument[0].WithoutElement[:foo!]" and output = "Argument[0]" + } +} + +/** + * `WithoutElement` 9 + */ +private class S52 extends Summary { + S52() { this = "s52" } + + override predicate propagates(string input, string output) { + input = "Argument[self].WithoutElement[:foo]" and output = "Argument[self]" + } +} + +/** + * `WithoutElement` 10 + */ +private class S53 extends Summary { + S53() { this = "s53" } + + override predicate propagates(string input, string output) { + input = "Argument[self].WithoutElement[:foo]" and + output = "ReturnValue" + } +} + +/** + * `WithoutElement` 11 + */ +private class S54 extends Summary { + S54() { this = "s54" } + + override predicate propagates(string input, string output) { + input = "Argument[self].WithoutElement[:foo].WithElement[any]" and + output = "ReturnValue" + } +} diff --git a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb new file mode 100644 index 000000000000..090791ddb203 --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb @@ -0,0 +1,518 @@ +def m1 + a = source "a" + x = a.s1() + sink x # $ hasValueFlow=a +end + +def m2(x) + a = source "a" + x.s2(a) + sink x # $ hasValueFlow=a +end + +def m3(x) + a = source "a" + s3(a, x) + sink x # $ hasValueFlow=a +end + +def m4 + sink s4("a", "b", "c") + sink s4(source "a", "b", "c") + sink s4("a", source "b", "c") # $ hasValueFlow=b SPURIOUS: hasValueFlow=c + sink s4("a", "b", source "c") # $ hasValueFlow=c + sink s4(source "a", source "b", source "c") # hasValueFlow=b hasValueFlow=c +end + +def m5(x, y, z) + a = source "a" + s5(a, x, y, z) + sink x + sink y # $ hasValueFlow=a + sink z # $ hasValueFlow=a +end + +def m6 + sink s6(foo: source "a", bar: source "b") # $ MISSING: hasValueFlow=a +end + +def m7(x) + a = source "a" + s7(a, foo: x) + sink x # $ hasValueFlow=a +end + +def m8 + sink(s8 { source "a" }) # $ hasValueFlow=a + sink(s8 do # $hasValueFlow=a + source "a" + end) +end + +def m9 + s9(source "a") { |x| sink x } # $ hasValueFlow=a + s9(source "a") do |x| + sink x # $ hasValueFlow=a + end +end + +def m10 + a = source "a" + sink s10(a) # $ hasValueFlow=a + sink s10(0, a) # $ hasValueFlow=a + sink s10(foo: a) # $ hasValueFlow=a + sink s10(foo: 0, bar: a) # $ hasValueFlow=a + sink (a).s10 + sink s10(&a) # $ hasValueFlow=a +end + +def m11 + a = source "a" + sink(s11 { a }) + sink(s11 do + a + end) + f = ->() { a } + sink s10(&f) +end + +def m12(x, y, z, &blk) + a = source "a" + a.s12(x, y, foo: z, &blk) + sink x # $ hasValueFlow=a + sink y # $ hasValueFlow=a + sink z # $ hasValueFlow=a + sink blk +end + +def m13 + a = source "a" + sink s13(a) + sink s13(foo: a) # $ hasValueFlow=a + sink s13(foo: 0, bar: a) # $ hasValueFlow=a + sink a.s13 +end + +def m14(w, x, y, z) + a = source "a" + a.s14(w, foo: x) + a.s14(foo: y, bar: z) + sink w + sink x # $ hasValueFlow=a + sink y # $ hasValueFlow=a + sink z # $ hasValueFlow=a +end + +def m15 + a = source "a" + b = source "b" + sink s15(**a) # $ SPURIOUS: hasTaintFlow=a MISSING: hasValueFlow=a + sink s15(0, 1, foo: b, **a) # $ SPURIOUS: hasTaintFlow=a MISSING: hasValueFlow=a +end + +def m16 + a = source "a" + b = source "b" + h = { a: a, b: 1 } + sink s16(**h) # $ hasValueFlow=a + sink s16(a) + sink s16(a: a) # $ hasValueFlow=a + sink s16(b: 1) + sink s16(b: b, **h) # $ hasValueFlow=a hasValueFlow=b +end + +def m17(h, x) + a = source "a" + s17(a, **h, foo: x) + sink h # $ hasValueFlow=a + sink x +end + +def m18(x) + a = source "a" + s18(a, **h, foo: x) + sink h + sink h[:foo] # $ MISSING: hasValueFlow=a + sink x # $ MISSING: hasValueFlow=a +end + +def m19(i) + a = source "a" + b = source "b" + + h = {} + h[0] = a + h[i] = b + + sink s19(h) # $ hasValueFlow=b +end + +def m20(i) + a = source "a" + x = s20(a) + sink x[0] # $ hasValueFlow=a + sink x[i] # $ hasValueFlow=a +end + +def m21(i) + a = source "a" + b = source "b" + + h = {} + h[0] = a + h[i] = b + + sink s21(h) # $ hasValueFlow=a hasValueFlow=b +end + +def m22 + a = source "a" + x = s22(a) + sink x[0] # $ hasValueFlow=a + sink x[i] # $ hasValueFlow=a +end + +def m23(i) + a = source "a" + b = source "b" + h = [] + h[0] = a + h[1] = b + sink s23(h) # $ hasValueFlow=a +end + +def m24(i) + a = source "a" + x = s24(a) + sink x[0] # $ hasValueFlow=a + sink x[1] + sink x[i] # $ hasValueFlow=a +end + +def m25(i) + a = source "a" + b = source "b" + h = [] + h[0] = a + h[1] = b + sink s25(h) # $ hasValueFlow=a +end + +def m26(i) + a = source "a" + x = s26(a) + sink x[0] # $ hasValueFlow=a + sink x[1] + sink x[i] # $ SPURIOUS: hasValueFlow=a +end + +def m27(i) + a = source "a" + b = source "b" + c = source "c" + d = source "d" + + h = [] + h[0] = a + h[1] = b + h[2] = c + h[i] = d + + sink s27(h) # $ hasValueFlow=b hasValueFlow=c hasValueFlow=d +end + +def m28(i) + a = source "a" + x = s28(a) + sink x[0] + sink x[1] # $ MISSING: hasValueFlow=a + sink x[2] # $ MISSING: hasValueFlow=a + sink x[i] # $ MISSING: hasValueFlow=a +end + +def m29(i) + a = source "a" + b = source "b" + c = source "c" + + h = [] + h[0] = a + h[1] = b + h[2] = c + h[i] = d + + sink s29(h) # $ hasValueFlow=b hasValueFlow=c +end + +def m30(i) + a = source "a" + x = s30(a) + sink x[0] # $ SPURIOUS: hasValueFlow=a + sink x[1] # $ hasValueFlow=a + sink x[2] # $ hasValueFlow=a + sink x[i] # $ SPURIOUS: hasValueFlow=a +end + +def m31(h, i) + h[:foo] = source("a") + h[:bar] = source("b") + h[1] = source("c") + h[i] = source("d") + + sink s31(h) # $ hasValueFlow=a hasValueFlow=d +end + +def m32(h, i) + h[:foo] = source("a") + h["foo"] = source("b") + h[:bar] = source("c") + h[1] = source("d") + h[i] = source("e") + + sink s32(h) # $ hasValueFlow=b hasValueFlow=e +end + +def m33(h, i) + h[:foo] = source("a") + h["foo"] = source("b") + h[:bar] = source("c") + h[1] = source("d") + h[i] = source("e") + h[nil] = source("f") + h[true] = source("g") + h[false] = source("h") + + sink s33(h) # $ hasValueFlow=e hasValueFlow=f hasValueFlow=g hasValueFlow=h +end + +def m35(h, i) + x = s35(source("a")) + sink x[:foo] # $ hasValueFlow=a + sink x[:bar] + sink x[i] # $ hasValueFlow=a +end + +def m36(h, i) + x = s36(source("a")) + sink x[:foo] + sink x["foo"] # $ hasValueFlow=a + sink x[:bar] + sink x[i] # $ hasValueFlow=a +end + +def m37(h, i) + x = s37(source("a")) + sink x[:foo] + sink x[true] # $ hasValueFlow=a + sink x[:bar] + sink x[i] # $ hasValueFlow=a +end + +def m38(h, i) + h["foo"] = source("a") + h[i] = source("b") + + sink s38(h) # $ hasValueFlow=a +end + +def m39(i) + x = s39(source("a")) + + sink x[:foo] # $ hasValueFlow=a + sink x[i] # $ SPURIOUS: hasValueFlow=a +end + +def m40 + x = A.new + x.foo = source("a") + x.bar = source("b") + sink s40(x) # $ hasValueFlow=a +end + +def m41 + x = s41(source("a")) + sink x.foo # $ hasValueFlow=a + sink x.bar +end + +def m42(i, h) + h[0] = source("a") + h[i] = source("b") + + x = s42(h) + + sink x[0] # $ hasValueFlow=a hasValueFlow=b + sink x[1] # $ hasValueFlow=b + sink x[i] # $ hasValueFlow=a hasValueFlow=b +end + +def m43(i, h) + h[0] = source("a") + h[i] = source("b") + + x = s43(h) + + sink x[0] # $ hasValueFlow=a + sink x[1] + sink x[i] # $ hasValueFlow=a +end + +def m44(i, h) + h[0] = source("a") + h[1] = source("b") + h[i] = source("c") + + s44(h) + + sink h[0] + sink h[1] # $ hasValueFlow=b + sink h[i] # $ hasValueFlow=b +end + +def m45(i, h) + h[0] = source("a") + h[1] = source("b") + h[i] = source("c") + + sink h[0] # $ hasValueFlow=a hasValueFlow=c + sink h[1] # $ hasValueFlow=b hasValueFlow=c + sink h[i] # $ hasValueFlow=a hasValueFlow=b hasValueFlow=c + + s45(h) + + sink h[0] # $ hasValueFlow=c + sink h[1] # $ hasValueFlow=b hasValueFlow=c + sink h[i] # $ hasValueFlow=b hasValueFlow=c +end + +def m46(i, h) + h[0] = source("a") + h[1] = source("b") + h[i] = source("c") + + sink h[0] # $ hasValueFlow=a hasValueFlow=c + sink h[1] # $ hasValueFlow=b hasValueFlow=c + sink h[i] # $ hasValueFlow=a hasValueFlow=b hasValueFlow=c + + x = s46(h) + + sink x[0] + sink x[1] # $ hasValueFlow=b + sink x[i] # $ hasValueFlow=b +end + +def m47(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + x = s47(h) + + sink x[:foo] + sink x[:bar] # $ hasValueFlow=b +end + +def m48(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + x = s48(h) + + sink x[:foo] + sink x[:bar] # $ hasValueFlow=b +end + +def m49(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + x = s49(h) + + sink x[:foo] # $ hasValueFlow=c + sink x[:bar] # $ hasValueFlow=b hasValueFlow=c +end + +def m50(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + s50(h) + + sink h[:foo] + sink h[:bar] # $ hasValueFlow=b +end + +def m51(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + s51(h) + + sink h[:foo] # $ hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c +end + +def m52(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + h.s52 + + sink h[:foo] + sink h[:bar] # $ hasValueFlow=b +end + +def m53(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + x = h.s53() + + sink x[:foo] + sink x[:bar] # $ hasValueFlow=b + + sink(source("d").s53()) # $ hasValueFlow=d +end + +def m54(i, h) + h[:foo] = source("a") + h[:bar] = source("b") + h[i] = source("c") + + sink h[:foo] # $ hasValueFlow=a hasValueFlow=c + sink h[:bar] # $ hasValueFlow=b hasValueFlow=c + + x = h.s54() + + sink x[:foo] + sink x[:bar] # $ hasValueFlow=b + + sink(source("d").s54()) +end diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected index 88c38783bf25..2dc14a20525a 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected @@ -408,358 +408,364 @@ edges | hash_flow.rb:625:11:625:16 | ...[...] : | hash_flow.rb:625:10:625:17 | ( ... ) | | hash_flow.rb:626:11:626:11 | a [element] : | hash_flow.rb:626:11:626:16 | ...[...] : | | hash_flow.rb:626:11:626:16 | ...[...] : | hash_flow.rb:626:10:626:17 | ( ... ) | -| hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:637:5:637:8 | hash [element :a] : | -| hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:637:5:637:8 | hash [element :c] : | -| hash_flow.rb:637:5:637:8 | [post] hash [element] : | hash_flow.rb:638:11:638:14 | hash [element] : | -| hash_flow.rb:637:5:637:8 | [post] hash [element] : | hash_flow.rb:639:11:639:14 | hash [element] : | +| hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:639:5:639:8 | hash [element :a] : | +| hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:639:5:639:8 | hash [element :c] : | +| hash_flow.rb:637:5:637:8 | [post] hash [element] : | hash_flow.rb:639:5:639:8 | hash [element] : | | hash_flow.rb:637:5:637:8 | [post] hash [element] : | hash_flow.rb:640:11:640:14 | hash [element] : | -| hash_flow.rb:637:5:637:8 | hash [element :a] : | hash_flow.rb:637:5:637:8 | [post] hash [element] : | -| hash_flow.rb:637:5:637:8 | hash [element :c] : | hash_flow.rb:637:5:637:8 | [post] hash [element] : | -| hash_flow.rb:638:11:638:14 | hash [element] : | hash_flow.rb:638:11:638:19 | ...[...] : | -| hash_flow.rb:638:11:638:19 | ...[...] : | hash_flow.rb:638:10:638:20 | ( ... ) | -| hash_flow.rb:639:11:639:14 | hash [element] : | hash_flow.rb:639:11:639:19 | ...[...] : | -| hash_flow.rb:639:11:639:19 | ...[...] : | hash_flow.rb:639:10:639:20 | ( ... ) | +| hash_flow.rb:637:5:637:8 | [post] hash [element] : | hash_flow.rb:641:11:641:14 | hash [element] : | +| hash_flow.rb:637:5:637:8 | [post] hash [element] : | hash_flow.rb:642:11:642:14 | hash [element] : | +| hash_flow.rb:637:15:637:25 | call to taint : | hash_flow.rb:637:5:637:8 | [post] hash [element] : | +| hash_flow.rb:639:5:639:8 | [post] hash [element] : | hash_flow.rb:640:11:640:14 | hash [element] : | +| hash_flow.rb:639:5:639:8 | [post] hash [element] : | hash_flow.rb:641:11:641:14 | hash [element] : | +| hash_flow.rb:639:5:639:8 | [post] hash [element] : | hash_flow.rb:642:11:642:14 | hash [element] : | +| hash_flow.rb:639:5:639:8 | hash [element :a] : | hash_flow.rb:639:5:639:8 | [post] hash [element] : | +| hash_flow.rb:639:5:639:8 | hash [element :c] : | hash_flow.rb:639:5:639:8 | [post] hash [element] : | +| hash_flow.rb:639:5:639:8 | hash [element] : | hash_flow.rb:639:5:639:8 | [post] hash [element] : | | hash_flow.rb:640:11:640:14 | hash [element] : | hash_flow.rb:640:11:640:19 | ...[...] : | | hash_flow.rb:640:11:640:19 | ...[...] : | hash_flow.rb:640:10:640:20 | ( ... ) | -| hash_flow.rb:647:15:647:25 | call to taint : | hash_flow.rb:651:9:651:12 | hash [element :a] : | -| hash_flow.rb:647:15:647:25 | call to taint : | hash_flow.rb:655:11:655:14 | hash [element :a] : | -| hash_flow.rb:649:15:649:25 | call to taint : | hash_flow.rb:651:9:651:12 | hash [element :c] : | -| hash_flow.rb:651:9:651:12 | hash [element :a] : | hash_flow.rb:651:35:651:39 | value : | -| hash_flow.rb:651:9:651:12 | hash [element :c] : | hash_flow.rb:651:35:651:39 | value : | -| hash_flow.rb:651:9:654:7 | call to transform_values [element] : | hash_flow.rb:656:11:656:11 | b [element] : | -| hash_flow.rb:651:35:651:39 | value : | hash_flow.rb:652:14:652:18 | value | -| hash_flow.rb:653:9:653:19 | call to taint : | hash_flow.rb:651:9:654:7 | call to transform_values [element] : | -| hash_flow.rb:655:11:655:14 | hash [element :a] : | hash_flow.rb:655:11:655:18 | ...[...] : | -| hash_flow.rb:655:11:655:18 | ...[...] : | hash_flow.rb:655:10:655:19 | ( ... ) | -| hash_flow.rb:656:11:656:11 | b [element] : | hash_flow.rb:656:11:656:15 | ...[...] : | -| hash_flow.rb:656:11:656:15 | ...[...] : | hash_flow.rb:656:10:656:16 | ( ... ) | -| hash_flow.rb:663:15:663:25 | call to taint : | hash_flow.rb:667:5:667:8 | hash [element :a] : | -| hash_flow.rb:665:15:665:25 | call to taint : | hash_flow.rb:667:5:667:8 | hash [element :c] : | -| hash_flow.rb:667:5:667:8 | [post] hash [element] : | hash_flow.rb:671:11:671:14 | hash [element] : | -| hash_flow.rb:667:5:667:8 | hash [element :a] : | hash_flow.rb:667:32:667:36 | value : | -| hash_flow.rb:667:5:667:8 | hash [element :c] : | hash_flow.rb:667:32:667:36 | value : | -| hash_flow.rb:667:32:667:36 | value : | hash_flow.rb:668:14:668:18 | value | -| hash_flow.rb:669:9:669:19 | call to taint : | hash_flow.rb:667:5:667:8 | [post] hash [element] : | -| hash_flow.rb:671:11:671:14 | hash [element] : | hash_flow.rb:671:11:671:18 | ...[...] : | -| hash_flow.rb:671:11:671:18 | ...[...] : | hash_flow.rb:671:10:671:19 | ( ... ) | -| hash_flow.rb:678:15:678:25 | call to taint : | hash_flow.rb:687:12:687:16 | hash1 [element :a] : | -| hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:687:12:687:16 | hash1 [element :c] : | -| hash_flow.rb:683:15:683:25 | call to taint : | hash_flow.rb:687:25:687:29 | hash2 [element :d] : | -| hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:687:25:687:29 | hash2 [element :f] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :a] : | hash_flow.rb:699:11:699:15 | hash1 [element :a] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :c] : | hash_flow.rb:701:11:701:15 | hash1 [element :c] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :d] : | hash_flow.rb:702:11:702:15 | hash1 [element :d] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :f] : | hash_flow.rb:704:11:704:15 | hash1 [element :f] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :a] : | hash_flow.rb:687:12:687:16 | [post] hash1 [element :a] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :a] : | hash_flow.rb:687:12:691:7 | call to update [element :a] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :a] : | hash_flow.rb:687:41:687:49 | old_value : | -| hash_flow.rb:687:12:687:16 | hash1 [element :a] : | hash_flow.rb:687:52:687:60 | new_value : | -| hash_flow.rb:687:12:687:16 | hash1 [element :c] : | hash_flow.rb:687:12:687:16 | [post] hash1 [element :c] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :c] : | hash_flow.rb:687:12:691:7 | call to update [element :c] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :c] : | hash_flow.rb:687:41:687:49 | old_value : | -| hash_flow.rb:687:12:687:16 | hash1 [element :c] : | hash_flow.rb:687:52:687:60 | new_value : | -| hash_flow.rb:687:12:691:7 | call to update [element :a] : | hash_flow.rb:692:11:692:14 | hash [element :a] : | -| hash_flow.rb:687:12:691:7 | call to update [element :c] : | hash_flow.rb:694:11:694:14 | hash [element :c] : | -| hash_flow.rb:687:12:691:7 | call to update [element :d] : | hash_flow.rb:695:11:695:14 | hash [element :d] : | -| hash_flow.rb:687:12:691:7 | call to update [element :f] : | hash_flow.rb:697:11:697:14 | hash [element :f] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :d] : | hash_flow.rb:687:12:687:16 | [post] hash1 [element :d] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :d] : | hash_flow.rb:687:12:691:7 | call to update [element :d] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :d] : | hash_flow.rb:687:41:687:49 | old_value : | -| hash_flow.rb:687:25:687:29 | hash2 [element :d] : | hash_flow.rb:687:52:687:60 | new_value : | -| hash_flow.rb:687:25:687:29 | hash2 [element :f] : | hash_flow.rb:687:12:687:16 | [post] hash1 [element :f] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :f] : | hash_flow.rb:687:12:691:7 | call to update [element :f] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :f] : | hash_flow.rb:687:41:687:49 | old_value : | -| hash_flow.rb:687:25:687:29 | hash2 [element :f] : | hash_flow.rb:687:52:687:60 | new_value : | -| hash_flow.rb:687:41:687:49 | old_value : | hash_flow.rb:689:14:689:22 | old_value | -| hash_flow.rb:687:52:687:60 | new_value : | hash_flow.rb:690:14:690:22 | new_value | -| hash_flow.rb:692:11:692:14 | hash [element :a] : | hash_flow.rb:692:11:692:18 | ...[...] : | -| hash_flow.rb:692:11:692:18 | ...[...] : | hash_flow.rb:692:10:692:19 | ( ... ) | -| hash_flow.rb:694:11:694:14 | hash [element :c] : | hash_flow.rb:694:11:694:18 | ...[...] : | +| hash_flow.rb:641:11:641:14 | hash [element] : | hash_flow.rb:641:11:641:19 | ...[...] : | +| hash_flow.rb:641:11:641:19 | ...[...] : | hash_flow.rb:641:10:641:20 | ( ... ) | +| hash_flow.rb:642:11:642:14 | hash [element] : | hash_flow.rb:642:11:642:19 | ...[...] : | +| hash_flow.rb:642:11:642:19 | ...[...] : | hash_flow.rb:642:10:642:20 | ( ... ) | +| hash_flow.rb:649:15:649:25 | call to taint : | hash_flow.rb:653:9:653:12 | hash [element :a] : | +| hash_flow.rb:649:15:649:25 | call to taint : | hash_flow.rb:657:11:657:14 | hash [element :a] : | +| hash_flow.rb:651:15:651:25 | call to taint : | hash_flow.rb:653:9:653:12 | hash [element :c] : | +| hash_flow.rb:653:9:653:12 | hash [element :a] : | hash_flow.rb:653:35:653:39 | value : | +| hash_flow.rb:653:9:653:12 | hash [element :c] : | hash_flow.rb:653:35:653:39 | value : | +| hash_flow.rb:653:9:656:7 | call to transform_values [element] : | hash_flow.rb:658:11:658:11 | b [element] : | +| hash_flow.rb:653:35:653:39 | value : | hash_flow.rb:654:14:654:18 | value | +| hash_flow.rb:655:9:655:19 | call to taint : | hash_flow.rb:653:9:656:7 | call to transform_values [element] : | +| hash_flow.rb:657:11:657:14 | hash [element :a] : | hash_flow.rb:657:11:657:18 | ...[...] : | +| hash_flow.rb:657:11:657:18 | ...[...] : | hash_flow.rb:657:10:657:19 | ( ... ) | +| hash_flow.rb:658:11:658:11 | b [element] : | hash_flow.rb:658:11:658:15 | ...[...] : | +| hash_flow.rb:658:11:658:15 | ...[...] : | hash_flow.rb:658:10:658:16 | ( ... ) | +| hash_flow.rb:665:15:665:25 | call to taint : | hash_flow.rb:669:5:669:8 | hash [element :a] : | +| hash_flow.rb:667:15:667:25 | call to taint : | hash_flow.rb:669:5:669:8 | hash [element :c] : | +| hash_flow.rb:669:5:669:8 | [post] hash [element] : | hash_flow.rb:673:11:673:14 | hash [element] : | +| hash_flow.rb:669:5:669:8 | hash [element :a] : | hash_flow.rb:669:32:669:36 | value : | +| hash_flow.rb:669:5:669:8 | hash [element :c] : | hash_flow.rb:669:32:669:36 | value : | +| hash_flow.rb:669:32:669:36 | value : | hash_flow.rb:670:14:670:18 | value | +| hash_flow.rb:671:9:671:19 | call to taint : | hash_flow.rb:669:5:669:8 | [post] hash [element] : | +| hash_flow.rb:673:11:673:14 | hash [element] : | hash_flow.rb:673:11:673:18 | ...[...] : | +| hash_flow.rb:673:11:673:18 | ...[...] : | hash_flow.rb:673:10:673:19 | ( ... ) | +| hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:689:12:689:16 | hash1 [element :a] : | +| hash_flow.rb:682:15:682:25 | call to taint : | hash_flow.rb:689:12:689:16 | hash1 [element :c] : | +| hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:689:25:689:29 | hash2 [element :d] : | +| hash_flow.rb:687:15:687:25 | call to taint : | hash_flow.rb:689:25:689:29 | hash2 [element :f] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] : | hash_flow.rb:701:11:701:15 | hash1 [element :a] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] : | hash_flow.rb:703:11:703:15 | hash1 [element :c] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] : | hash_flow.rb:704:11:704:15 | hash1 [element :d] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] : | hash_flow.rb:706:11:706:15 | hash1 [element :f] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] : | hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] : | hash_flow.rb:689:12:693:7 | call to update [element :a] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] : | hash_flow.rb:689:41:689:49 | old_value : | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] : | hash_flow.rb:689:52:689:60 | new_value : | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] : | hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] : | hash_flow.rb:689:12:693:7 | call to update [element :c] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] : | hash_flow.rb:689:41:689:49 | old_value : | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] : | hash_flow.rb:689:52:689:60 | new_value : | +| hash_flow.rb:689:12:693:7 | call to update [element :a] : | hash_flow.rb:694:11:694:14 | hash [element :a] : | +| hash_flow.rb:689:12:693:7 | call to update [element :c] : | hash_flow.rb:696:11:696:14 | hash [element :c] : | +| hash_flow.rb:689:12:693:7 | call to update [element :d] : | hash_flow.rb:697:11:697:14 | hash [element :d] : | +| hash_flow.rb:689:12:693:7 | call to update [element :f] : | hash_flow.rb:699:11:699:14 | hash [element :f] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] : | hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] : | hash_flow.rb:689:12:693:7 | call to update [element :d] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] : | hash_flow.rb:689:41:689:49 | old_value : | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] : | hash_flow.rb:689:52:689:60 | new_value : | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] : | hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] : | hash_flow.rb:689:12:693:7 | call to update [element :f] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] : | hash_flow.rb:689:41:689:49 | old_value : | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] : | hash_flow.rb:689:52:689:60 | new_value : | +| hash_flow.rb:689:41:689:49 | old_value : | hash_flow.rb:691:14:691:22 | old_value | +| hash_flow.rb:689:52:689:60 | new_value : | hash_flow.rb:692:14:692:22 | new_value | +| hash_flow.rb:694:11:694:14 | hash [element :a] : | hash_flow.rb:694:11:694:18 | ...[...] : | | hash_flow.rb:694:11:694:18 | ...[...] : | hash_flow.rb:694:10:694:19 | ( ... ) | -| hash_flow.rb:695:11:695:14 | hash [element :d] : | hash_flow.rb:695:11:695:18 | ...[...] : | -| hash_flow.rb:695:11:695:18 | ...[...] : | hash_flow.rb:695:10:695:19 | ( ... ) | -| hash_flow.rb:697:11:697:14 | hash [element :f] : | hash_flow.rb:697:11:697:18 | ...[...] : | +| hash_flow.rb:696:11:696:14 | hash [element :c] : | hash_flow.rb:696:11:696:18 | ...[...] : | +| hash_flow.rb:696:11:696:18 | ...[...] : | hash_flow.rb:696:10:696:19 | ( ... ) | +| hash_flow.rb:697:11:697:14 | hash [element :d] : | hash_flow.rb:697:11:697:18 | ...[...] : | | hash_flow.rb:697:11:697:18 | ...[...] : | hash_flow.rb:697:10:697:19 | ( ... ) | -| hash_flow.rb:699:11:699:15 | hash1 [element :a] : | hash_flow.rb:699:11:699:19 | ...[...] : | -| hash_flow.rb:699:11:699:19 | ...[...] : | hash_flow.rb:699:10:699:20 | ( ... ) | -| hash_flow.rb:701:11:701:15 | hash1 [element :c] : | hash_flow.rb:701:11:701:19 | ...[...] : | +| hash_flow.rb:699:11:699:14 | hash [element :f] : | hash_flow.rb:699:11:699:18 | ...[...] : | +| hash_flow.rb:699:11:699:18 | ...[...] : | hash_flow.rb:699:10:699:19 | ( ... ) | +| hash_flow.rb:701:11:701:15 | hash1 [element :a] : | hash_flow.rb:701:11:701:19 | ...[...] : | | hash_flow.rb:701:11:701:19 | ...[...] : | hash_flow.rb:701:10:701:20 | ( ... ) | -| hash_flow.rb:702:11:702:15 | hash1 [element :d] : | hash_flow.rb:702:11:702:19 | ...[...] : | -| hash_flow.rb:702:11:702:19 | ...[...] : | hash_flow.rb:702:10:702:20 | ( ... ) | -| hash_flow.rb:704:11:704:15 | hash1 [element :f] : | hash_flow.rb:704:11:704:19 | ...[...] : | +| hash_flow.rb:703:11:703:15 | hash1 [element :c] : | hash_flow.rb:703:11:703:19 | ...[...] : | +| hash_flow.rb:703:11:703:19 | ...[...] : | hash_flow.rb:703:10:703:20 | ( ... ) | +| hash_flow.rb:704:11:704:15 | hash1 [element :d] : | hash_flow.rb:704:11:704:19 | ...[...] : | | hash_flow.rb:704:11:704:19 | ...[...] : | hash_flow.rb:704:10:704:20 | ( ... ) | -| hash_flow.rb:711:15:711:25 | call to taint : | hash_flow.rb:715:9:715:12 | hash [element :a] : | -| hash_flow.rb:713:15:713:25 | call to taint : | hash_flow.rb:715:9:715:12 | hash [element :c] : | -| hash_flow.rb:715:9:715:12 | hash [element :a] : | hash_flow.rb:715:9:715:19 | call to values [element] : | -| hash_flow.rb:715:9:715:12 | hash [element :c] : | hash_flow.rb:715:9:715:19 | call to values [element] : | -| hash_flow.rb:715:9:715:19 | call to values [element] : | hash_flow.rb:716:11:716:11 | a [element] : | -| hash_flow.rb:716:11:716:11 | a [element] : | hash_flow.rb:716:11:716:14 | ...[...] : | -| hash_flow.rb:716:11:716:14 | ...[...] : | hash_flow.rb:716:10:716:15 | ( ... ) | -| hash_flow.rb:723:15:723:25 | call to taint : | hash_flow.rb:727:9:727:12 | hash [element :a] : | -| hash_flow.rb:723:15:723:25 | call to taint : | hash_flow.rb:729:9:729:12 | hash [element :a] : | -| hash_flow.rb:725:15:725:25 | call to taint : | hash_flow.rb:729:9:729:12 | hash [element :c] : | -| hash_flow.rb:727:9:727:12 | hash [element :a] : | hash_flow.rb:727:9:727:26 | call to values_at [element 0] : | -| hash_flow.rb:727:9:727:26 | call to values_at [element 0] : | hash_flow.rb:728:10:728:10 | b [element 0] : | -| hash_flow.rb:728:10:728:10 | b [element 0] : | hash_flow.rb:728:10:728:13 | ...[...] | -| hash_flow.rb:729:9:729:12 | hash [element :a] : | hash_flow.rb:729:9:729:31 | call to fetch_values [element] : | -| hash_flow.rb:729:9:729:12 | hash [element :c] : | hash_flow.rb:729:9:729:31 | call to fetch_values [element] : | -| hash_flow.rb:729:9:729:31 | call to fetch_values [element] : | hash_flow.rb:730:10:730:10 | b [element] : | -| hash_flow.rb:730:10:730:10 | b [element] : | hash_flow.rb:730:10:730:13 | ...[...] | -| hash_flow.rb:737:15:737:25 | call to taint : | hash_flow.rb:746:16:746:20 | hash1 [element :a] : | -| hash_flow.rb:739:15:739:25 | call to taint : | hash_flow.rb:746:16:746:20 | hash1 [element :c] : | -| hash_flow.rb:742:15:742:25 | call to taint : | hash_flow.rb:746:44:746:48 | hash2 [element :d] : | -| hash_flow.rb:744:15:744:25 | call to taint : | hash_flow.rb:746:44:746:48 | hash2 [element :f] : | -| hash_flow.rb:746:14:746:20 | ** ... [element :a] : | hash_flow.rb:747:10:747:13 | hash [element :a] : | -| hash_flow.rb:746:14:746:20 | ** ... [element :c] : | hash_flow.rb:749:10:749:13 | hash [element :c] : | -| hash_flow.rb:746:16:746:20 | hash1 [element :a] : | hash_flow.rb:746:14:746:20 | ** ... [element :a] : | -| hash_flow.rb:746:16:746:20 | hash1 [element :c] : | hash_flow.rb:746:14:746:20 | ** ... [element :c] : | -| hash_flow.rb:746:29:746:39 | call to taint : | hash_flow.rb:753:10:753:13 | hash [element :g] : | -| hash_flow.rb:746:42:746:48 | ** ... [element :d] : | hash_flow.rb:750:10:750:13 | hash [element :d] : | -| hash_flow.rb:746:42:746:48 | ** ... [element :f] : | hash_flow.rb:752:10:752:13 | hash [element :f] : | -| hash_flow.rb:746:44:746:48 | hash2 [element :d] : | hash_flow.rb:746:42:746:48 | ** ... [element :d] : | -| hash_flow.rb:746:44:746:48 | hash2 [element :f] : | hash_flow.rb:746:42:746:48 | ** ... [element :f] : | -| hash_flow.rb:747:10:747:13 | hash [element :a] : | hash_flow.rb:747:10:747:17 | ...[...] | -| hash_flow.rb:749:10:749:13 | hash [element :c] : | hash_flow.rb:749:10:749:17 | ...[...] | -| hash_flow.rb:750:10:750:13 | hash [element :d] : | hash_flow.rb:750:10:750:17 | ...[...] | -| hash_flow.rb:752:10:752:13 | hash [element :f] : | hash_flow.rb:752:10:752:17 | ...[...] | -| hash_flow.rb:753:10:753:13 | hash [element :g] : | hash_flow.rb:753:10:753:17 | ...[...] | -| hash_flow.rb:761:15:761:25 | call to taint : | hash_flow.rb:767:10:767:13 | hash [element :a] : | -| hash_flow.rb:763:15:763:25 | call to taint : | hash_flow.rb:769:10:769:13 | hash [element :c] : | -| hash_flow.rb:763:15:763:25 | call to taint : | hash_flow.rb:772:9:772:12 | hash [element :c] : | -| hash_flow.rb:764:15:764:25 | call to taint : | hash_flow.rb:770:10:770:13 | hash [element :d] : | -| hash_flow.rb:767:10:767:13 | hash [element :a] : | hash_flow.rb:767:10:767:17 | ...[...] | -| hash_flow.rb:769:10:769:13 | hash [element :c] : | hash_flow.rb:769:10:769:17 | ...[...] | -| hash_flow.rb:770:10:770:13 | hash [element :d] : | hash_flow.rb:770:10:770:17 | ...[...] | -| hash_flow.rb:772:9:772:12 | [post] hash [element :c] : | hash_flow.rb:781:10:781:13 | hash [element :c] : | -| hash_flow.rb:772:9:772:12 | hash [element :c] : | hash_flow.rb:772:9:772:12 | [post] hash [element :c] : | -| hash_flow.rb:772:9:772:12 | hash [element :c] : | hash_flow.rb:772:9:772:31 | call to except! [element :c] : | -| hash_flow.rb:772:9:772:31 | call to except! [element :c] : | hash_flow.rb:776:10:776:10 | x [element :c] : | -| hash_flow.rb:776:10:776:10 | x [element :c] : | hash_flow.rb:776:10:776:14 | ...[...] | -| hash_flow.rb:781:10:781:13 | hash [element :c] : | hash_flow.rb:781:10:781:17 | ...[...] | -| hash_flow.rb:789:15:789:25 | call to taint : | hash_flow.rb:798:12:798:16 | hash1 [element :a] : | -| hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:798:12:798:16 | hash1 [element :c] : | -| hash_flow.rb:794:15:794:25 | call to taint : | hash_flow.rb:798:29:798:33 | hash2 [element :d] : | -| hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:798:29:798:33 | hash2 [element :f] : | -| hash_flow.rb:798:12:798:16 | hash1 [element :a] : | hash_flow.rb:798:12:802:7 | call to deep_merge [element :a] : | -| hash_flow.rb:798:12:798:16 | hash1 [element :a] : | hash_flow.rb:798:45:798:53 | old_value : | -| hash_flow.rb:798:12:798:16 | hash1 [element :a] : | hash_flow.rb:798:56:798:64 | new_value : | -| hash_flow.rb:798:12:798:16 | hash1 [element :c] : | hash_flow.rb:798:12:802:7 | call to deep_merge [element :c] : | -| hash_flow.rb:798:12:798:16 | hash1 [element :c] : | hash_flow.rb:798:45:798:53 | old_value : | -| hash_flow.rb:798:12:798:16 | hash1 [element :c] : | hash_flow.rb:798:56:798:64 | new_value : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :a] : | hash_flow.rb:803:11:803:14 | hash [element :a] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :c] : | hash_flow.rb:805:11:805:14 | hash [element :c] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :d] : | hash_flow.rb:806:11:806:14 | hash [element :d] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :f] : | hash_flow.rb:808:11:808:14 | hash [element :f] : | -| hash_flow.rb:798:29:798:33 | hash2 [element :d] : | hash_flow.rb:798:12:802:7 | call to deep_merge [element :d] : | -| hash_flow.rb:798:29:798:33 | hash2 [element :d] : | hash_flow.rb:798:45:798:53 | old_value : | -| hash_flow.rb:798:29:798:33 | hash2 [element :d] : | hash_flow.rb:798:56:798:64 | new_value : | -| hash_flow.rb:798:29:798:33 | hash2 [element :f] : | hash_flow.rb:798:12:802:7 | call to deep_merge [element :f] : | -| hash_flow.rb:798:29:798:33 | hash2 [element :f] : | hash_flow.rb:798:45:798:53 | old_value : | -| hash_flow.rb:798:29:798:33 | hash2 [element :f] : | hash_flow.rb:798:56:798:64 | new_value : | -| hash_flow.rb:798:45:798:53 | old_value : | hash_flow.rb:800:14:800:22 | old_value | -| hash_flow.rb:798:56:798:64 | new_value : | hash_flow.rb:801:14:801:22 | new_value | -| hash_flow.rb:803:11:803:14 | hash [element :a] : | hash_flow.rb:803:11:803:18 | ...[...] : | -| hash_flow.rb:803:11:803:18 | ...[...] : | hash_flow.rb:803:10:803:19 | ( ... ) | -| hash_flow.rb:805:11:805:14 | hash [element :c] : | hash_flow.rb:805:11:805:18 | ...[...] : | +| hash_flow.rb:706:11:706:15 | hash1 [element :f] : | hash_flow.rb:706:11:706:19 | ...[...] : | +| hash_flow.rb:706:11:706:19 | ...[...] : | hash_flow.rb:706:10:706:20 | ( ... ) | +| hash_flow.rb:713:15:713:25 | call to taint : | hash_flow.rb:717:9:717:12 | hash [element :a] : | +| hash_flow.rb:715:15:715:25 | call to taint : | hash_flow.rb:717:9:717:12 | hash [element :c] : | +| hash_flow.rb:717:9:717:12 | hash [element :a] : | hash_flow.rb:717:9:717:19 | call to values [element] : | +| hash_flow.rb:717:9:717:12 | hash [element :c] : | hash_flow.rb:717:9:717:19 | call to values [element] : | +| hash_flow.rb:717:9:717:19 | call to values [element] : | hash_flow.rb:718:11:718:11 | a [element] : | +| hash_flow.rb:718:11:718:11 | a [element] : | hash_flow.rb:718:11:718:14 | ...[...] : | +| hash_flow.rb:718:11:718:14 | ...[...] : | hash_flow.rb:718:10:718:15 | ( ... ) | +| hash_flow.rb:725:15:725:25 | call to taint : | hash_flow.rb:729:9:729:12 | hash [element :a] : | +| hash_flow.rb:725:15:725:25 | call to taint : | hash_flow.rb:731:9:731:12 | hash [element :a] : | +| hash_flow.rb:727:15:727:25 | call to taint : | hash_flow.rb:731:9:731:12 | hash [element :c] : | +| hash_flow.rb:729:9:729:12 | hash [element :a] : | hash_flow.rb:729:9:729:26 | call to values_at [element 0] : | +| hash_flow.rb:729:9:729:26 | call to values_at [element 0] : | hash_flow.rb:730:10:730:10 | b [element 0] : | +| hash_flow.rb:730:10:730:10 | b [element 0] : | hash_flow.rb:730:10:730:13 | ...[...] | +| hash_flow.rb:731:9:731:12 | hash [element :a] : | hash_flow.rb:731:9:731:31 | call to fetch_values [element] : | +| hash_flow.rb:731:9:731:12 | hash [element :c] : | hash_flow.rb:731:9:731:31 | call to fetch_values [element] : | +| hash_flow.rb:731:9:731:31 | call to fetch_values [element] : | hash_flow.rb:732:10:732:10 | b [element] : | +| hash_flow.rb:732:10:732:10 | b [element] : | hash_flow.rb:732:10:732:13 | ...[...] | +| hash_flow.rb:739:15:739:25 | call to taint : | hash_flow.rb:748:16:748:20 | hash1 [element :a] : | +| hash_flow.rb:741:15:741:25 | call to taint : | hash_flow.rb:748:16:748:20 | hash1 [element :c] : | +| hash_flow.rb:744:15:744:25 | call to taint : | hash_flow.rb:748:44:748:48 | hash2 [element :d] : | +| hash_flow.rb:746:15:746:25 | call to taint : | hash_flow.rb:748:44:748:48 | hash2 [element :f] : | +| hash_flow.rb:748:14:748:20 | ** ... [element :a] : | hash_flow.rb:749:10:749:13 | hash [element :a] : | +| hash_flow.rb:748:14:748:20 | ** ... [element :c] : | hash_flow.rb:751:10:751:13 | hash [element :c] : | +| hash_flow.rb:748:16:748:20 | hash1 [element :a] : | hash_flow.rb:748:14:748:20 | ** ... [element :a] : | +| hash_flow.rb:748:16:748:20 | hash1 [element :c] : | hash_flow.rb:748:14:748:20 | ** ... [element :c] : | +| hash_flow.rb:748:29:748:39 | call to taint : | hash_flow.rb:755:10:755:13 | hash [element :g] : | +| hash_flow.rb:748:42:748:48 | ** ... [element :d] : | hash_flow.rb:752:10:752:13 | hash [element :d] : | +| hash_flow.rb:748:42:748:48 | ** ... [element :f] : | hash_flow.rb:754:10:754:13 | hash [element :f] : | +| hash_flow.rb:748:44:748:48 | hash2 [element :d] : | hash_flow.rb:748:42:748:48 | ** ... [element :d] : | +| hash_flow.rb:748:44:748:48 | hash2 [element :f] : | hash_flow.rb:748:42:748:48 | ** ... [element :f] : | +| hash_flow.rb:749:10:749:13 | hash [element :a] : | hash_flow.rb:749:10:749:17 | ...[...] | +| hash_flow.rb:751:10:751:13 | hash [element :c] : | hash_flow.rb:751:10:751:17 | ...[...] | +| hash_flow.rb:752:10:752:13 | hash [element :d] : | hash_flow.rb:752:10:752:17 | ...[...] | +| hash_flow.rb:754:10:754:13 | hash [element :f] : | hash_flow.rb:754:10:754:17 | ...[...] | +| hash_flow.rb:755:10:755:13 | hash [element :g] : | hash_flow.rb:755:10:755:17 | ...[...] | +| hash_flow.rb:763:15:763:25 | call to taint : | hash_flow.rb:769:10:769:13 | hash [element :a] : | +| hash_flow.rb:765:15:765:25 | call to taint : | hash_flow.rb:771:10:771:13 | hash [element :c] : | +| hash_flow.rb:765:15:765:25 | call to taint : | hash_flow.rb:774:9:774:12 | hash [element :c] : | +| hash_flow.rb:766:15:766:25 | call to taint : | hash_flow.rb:772:10:772:13 | hash [element :d] : | +| hash_flow.rb:769:10:769:13 | hash [element :a] : | hash_flow.rb:769:10:769:17 | ...[...] | +| hash_flow.rb:771:10:771:13 | hash [element :c] : | hash_flow.rb:771:10:771:17 | ...[...] | +| hash_flow.rb:772:10:772:13 | hash [element :d] : | hash_flow.rb:772:10:772:17 | ...[...] | +| hash_flow.rb:774:9:774:12 | [post] hash [element :c] : | hash_flow.rb:783:10:783:13 | hash [element :c] : | +| hash_flow.rb:774:9:774:12 | hash [element :c] : | hash_flow.rb:774:9:774:12 | [post] hash [element :c] : | +| hash_flow.rb:774:9:774:12 | hash [element :c] : | hash_flow.rb:774:9:774:31 | call to except! [element :c] : | +| hash_flow.rb:774:9:774:31 | call to except! [element :c] : | hash_flow.rb:778:10:778:10 | x [element :c] : | +| hash_flow.rb:778:10:778:10 | x [element :c] : | hash_flow.rb:778:10:778:14 | ...[...] | +| hash_flow.rb:783:10:783:13 | hash [element :c] : | hash_flow.rb:783:10:783:17 | ...[...] | +| hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:800:12:800:16 | hash1 [element :a] : | +| hash_flow.rb:793:15:793:25 | call to taint : | hash_flow.rb:800:12:800:16 | hash1 [element :c] : | +| hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:800:29:800:33 | hash2 [element :d] : | +| hash_flow.rb:798:15:798:25 | call to taint : | hash_flow.rb:800:29:800:33 | hash2 [element :f] : | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] : | hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] : | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] : | hash_flow.rb:800:45:800:53 | old_value : | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] : | hash_flow.rb:800:56:800:64 | new_value : | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] : | hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] : | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] : | hash_flow.rb:800:45:800:53 | old_value : | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] : | hash_flow.rb:800:56:800:64 | new_value : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] : | hash_flow.rb:805:11:805:14 | hash [element :a] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] : | hash_flow.rb:807:11:807:14 | hash [element :c] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] : | hash_flow.rb:808:11:808:14 | hash [element :d] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] : | hash_flow.rb:810:11:810:14 | hash [element :f] : | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] : | hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] : | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] : | hash_flow.rb:800:45:800:53 | old_value : | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] : | hash_flow.rb:800:56:800:64 | new_value : | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] : | hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] : | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] : | hash_flow.rb:800:45:800:53 | old_value : | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] : | hash_flow.rb:800:56:800:64 | new_value : | +| hash_flow.rb:800:45:800:53 | old_value : | hash_flow.rb:802:14:802:22 | old_value | +| hash_flow.rb:800:56:800:64 | new_value : | hash_flow.rb:803:14:803:22 | new_value | +| hash_flow.rb:805:11:805:14 | hash [element :a] : | hash_flow.rb:805:11:805:18 | ...[...] : | | hash_flow.rb:805:11:805:18 | ...[...] : | hash_flow.rb:805:10:805:19 | ( ... ) | -| hash_flow.rb:806:11:806:14 | hash [element :d] : | hash_flow.rb:806:11:806:18 | ...[...] : | -| hash_flow.rb:806:11:806:18 | ...[...] : | hash_flow.rb:806:10:806:19 | ( ... ) | -| hash_flow.rb:808:11:808:14 | hash [element :f] : | hash_flow.rb:808:11:808:18 | ...[...] : | +| hash_flow.rb:807:11:807:14 | hash [element :c] : | hash_flow.rb:807:11:807:18 | ...[...] : | +| hash_flow.rb:807:11:807:18 | ...[...] : | hash_flow.rb:807:10:807:19 | ( ... ) | +| hash_flow.rb:808:11:808:14 | hash [element :d] : | hash_flow.rb:808:11:808:18 | ...[...] : | | hash_flow.rb:808:11:808:18 | ...[...] : | hash_flow.rb:808:10:808:19 | ( ... ) | -| hash_flow.rb:815:15:815:25 | call to taint : | hash_flow.rb:824:12:824:16 | hash1 [element :a] : | -| hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:824:12:824:16 | hash1 [element :c] : | -| hash_flow.rb:820:15:820:25 | call to taint : | hash_flow.rb:824:30:824:34 | hash2 [element :d] : | -| hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:824:30:824:34 | hash2 [element :f] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :a] : | hash_flow.rb:836:11:836:15 | hash1 [element :a] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :c] : | hash_flow.rb:838:11:838:15 | hash1 [element :c] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :d] : | hash_flow.rb:839:11:839:15 | hash1 [element :d] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :f] : | hash_flow.rb:841:11:841:15 | hash1 [element :f] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :a] : | hash_flow.rb:824:12:824:16 | [post] hash1 [element :a] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :a] : | hash_flow.rb:824:12:828:7 | call to deep_merge! [element :a] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :a] : | hash_flow.rb:824:46:824:54 | old_value : | -| hash_flow.rb:824:12:824:16 | hash1 [element :a] : | hash_flow.rb:824:57:824:65 | new_value : | -| hash_flow.rb:824:12:824:16 | hash1 [element :c] : | hash_flow.rb:824:12:824:16 | [post] hash1 [element :c] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :c] : | hash_flow.rb:824:12:828:7 | call to deep_merge! [element :c] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :c] : | hash_flow.rb:824:46:824:54 | old_value : | -| hash_flow.rb:824:12:824:16 | hash1 [element :c] : | hash_flow.rb:824:57:824:65 | new_value : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :a] : | hash_flow.rb:829:11:829:14 | hash [element :a] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :c] : | hash_flow.rb:831:11:831:14 | hash [element :c] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :d] : | hash_flow.rb:832:11:832:14 | hash [element :d] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :f] : | hash_flow.rb:834:11:834:14 | hash [element :f] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :d] : | hash_flow.rb:824:12:824:16 | [post] hash1 [element :d] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :d] : | hash_flow.rb:824:12:828:7 | call to deep_merge! [element :d] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :d] : | hash_flow.rb:824:46:824:54 | old_value : | -| hash_flow.rb:824:30:824:34 | hash2 [element :d] : | hash_flow.rb:824:57:824:65 | new_value : | -| hash_flow.rb:824:30:824:34 | hash2 [element :f] : | hash_flow.rb:824:12:824:16 | [post] hash1 [element :f] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :f] : | hash_flow.rb:824:12:828:7 | call to deep_merge! [element :f] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :f] : | hash_flow.rb:824:46:824:54 | old_value : | -| hash_flow.rb:824:30:824:34 | hash2 [element :f] : | hash_flow.rb:824:57:824:65 | new_value : | -| hash_flow.rb:824:46:824:54 | old_value : | hash_flow.rb:826:14:826:22 | old_value | -| hash_flow.rb:824:57:824:65 | new_value : | hash_flow.rb:827:14:827:22 | new_value | -| hash_flow.rb:829:11:829:14 | hash [element :a] : | hash_flow.rb:829:11:829:18 | ...[...] : | -| hash_flow.rb:829:11:829:18 | ...[...] : | hash_flow.rb:829:10:829:19 | ( ... ) | -| hash_flow.rb:831:11:831:14 | hash [element :c] : | hash_flow.rb:831:11:831:18 | ...[...] : | +| hash_flow.rb:810:11:810:14 | hash [element :f] : | hash_flow.rb:810:11:810:18 | ...[...] : | +| hash_flow.rb:810:11:810:18 | ...[...] : | hash_flow.rb:810:10:810:19 | ( ... ) | +| hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:826:12:826:16 | hash1 [element :a] : | +| hash_flow.rb:819:15:819:25 | call to taint : | hash_flow.rb:826:12:826:16 | hash1 [element :c] : | +| hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:826:30:826:34 | hash2 [element :d] : | +| hash_flow.rb:824:15:824:25 | call to taint : | hash_flow.rb:826:30:826:34 | hash2 [element :f] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] : | hash_flow.rb:838:11:838:15 | hash1 [element :a] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] : | hash_flow.rb:840:11:840:15 | hash1 [element :c] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] : | hash_flow.rb:841:11:841:15 | hash1 [element :d] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] : | hash_flow.rb:843:11:843:15 | hash1 [element :f] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] : | hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] : | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] : | hash_flow.rb:826:46:826:54 | old_value : | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] : | hash_flow.rb:826:57:826:65 | new_value : | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] : | hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] : | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] : | hash_flow.rb:826:46:826:54 | old_value : | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] : | hash_flow.rb:826:57:826:65 | new_value : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] : | hash_flow.rb:831:11:831:14 | hash [element :a] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] : | hash_flow.rb:833:11:833:14 | hash [element :c] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] : | hash_flow.rb:834:11:834:14 | hash [element :d] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] : | hash_flow.rb:836:11:836:14 | hash [element :f] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] : | hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] : | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] : | hash_flow.rb:826:46:826:54 | old_value : | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] : | hash_flow.rb:826:57:826:65 | new_value : | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] : | hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] : | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] : | hash_flow.rb:826:46:826:54 | old_value : | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] : | hash_flow.rb:826:57:826:65 | new_value : | +| hash_flow.rb:826:46:826:54 | old_value : | hash_flow.rb:828:14:828:22 | old_value | +| hash_flow.rb:826:57:826:65 | new_value : | hash_flow.rb:829:14:829:22 | new_value | +| hash_flow.rb:831:11:831:14 | hash [element :a] : | hash_flow.rb:831:11:831:18 | ...[...] : | | hash_flow.rb:831:11:831:18 | ...[...] : | hash_flow.rb:831:10:831:19 | ( ... ) | -| hash_flow.rb:832:11:832:14 | hash [element :d] : | hash_flow.rb:832:11:832:18 | ...[...] : | -| hash_flow.rb:832:11:832:18 | ...[...] : | hash_flow.rb:832:10:832:19 | ( ... ) | -| hash_flow.rb:834:11:834:14 | hash [element :f] : | hash_flow.rb:834:11:834:18 | ...[...] : | +| hash_flow.rb:833:11:833:14 | hash [element :c] : | hash_flow.rb:833:11:833:18 | ...[...] : | +| hash_flow.rb:833:11:833:18 | ...[...] : | hash_flow.rb:833:10:833:19 | ( ... ) | +| hash_flow.rb:834:11:834:14 | hash [element :d] : | hash_flow.rb:834:11:834:18 | ...[...] : | | hash_flow.rb:834:11:834:18 | ...[...] : | hash_flow.rb:834:10:834:19 | ( ... ) | -| hash_flow.rb:836:11:836:15 | hash1 [element :a] : | hash_flow.rb:836:11:836:19 | ...[...] : | -| hash_flow.rb:836:11:836:19 | ...[...] : | hash_flow.rb:836:10:836:20 | ( ... ) | -| hash_flow.rb:838:11:838:15 | hash1 [element :c] : | hash_flow.rb:838:11:838:19 | ...[...] : | +| hash_flow.rb:836:11:836:14 | hash [element :f] : | hash_flow.rb:836:11:836:18 | ...[...] : | +| hash_flow.rb:836:11:836:18 | ...[...] : | hash_flow.rb:836:10:836:19 | ( ... ) | +| hash_flow.rb:838:11:838:15 | hash1 [element :a] : | hash_flow.rb:838:11:838:19 | ...[...] : | | hash_flow.rb:838:11:838:19 | ...[...] : | hash_flow.rb:838:10:838:20 | ( ... ) | -| hash_flow.rb:839:11:839:15 | hash1 [element :d] : | hash_flow.rb:839:11:839:19 | ...[...] : | -| hash_flow.rb:839:11:839:19 | ...[...] : | hash_flow.rb:839:10:839:20 | ( ... ) | -| hash_flow.rb:841:11:841:15 | hash1 [element :f] : | hash_flow.rb:841:11:841:19 | ...[...] : | +| hash_flow.rb:840:11:840:15 | hash1 [element :c] : | hash_flow.rb:840:11:840:19 | ...[...] : | +| hash_flow.rb:840:11:840:19 | ...[...] : | hash_flow.rb:840:10:840:20 | ( ... ) | +| hash_flow.rb:841:11:841:15 | hash1 [element :d] : | hash_flow.rb:841:11:841:19 | ...[...] : | | hash_flow.rb:841:11:841:19 | ...[...] : | hash_flow.rb:841:10:841:20 | ( ... ) | -| hash_flow.rb:848:12:848:22 | call to taint : | hash_flow.rb:858:13:858:17 | hash1 [element :a] : | -| hash_flow.rb:848:12:848:22 | call to taint : | hash_flow.rb:867:13:867:17 | hash1 [element :a] : | -| hash_flow.rb:850:12:850:22 | call to taint : | hash_flow.rb:858:13:858:17 | hash1 [element :c] : | -| hash_flow.rb:850:12:850:22 | call to taint : | hash_flow.rb:867:13:867:17 | hash1 [element :c] : | -| hash_flow.rb:853:12:853:22 | call to taint : | hash_flow.rb:858:33:858:37 | hash2 [element :d] : | -| hash_flow.rb:853:12:853:22 | call to taint : | hash_flow.rb:867:33:867:37 | hash2 [element :d] : | -| hash_flow.rb:855:12:855:22 | call to taint : | hash_flow.rb:858:33:858:37 | hash2 [element :f] : | -| hash_flow.rb:855:12:855:22 | call to taint : | hash_flow.rb:867:33:867:37 | hash2 [element :f] : | -| hash_flow.rb:858:13:858:17 | hash1 [element :a] : | hash_flow.rb:858:13:858:38 | call to reverse_merge [element :a] : | -| hash_flow.rb:858:13:858:17 | hash1 [element :c] : | hash_flow.rb:858:13:858:38 | call to reverse_merge [element :c] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :a] : | hash_flow.rb:859:11:859:15 | hash3 [element :a] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :c] : | hash_flow.rb:861:11:861:15 | hash3 [element :c] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :d] : | hash_flow.rb:862:11:862:15 | hash3 [element :d] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :f] : | hash_flow.rb:864:11:864:15 | hash3 [element :f] : | -| hash_flow.rb:858:33:858:37 | hash2 [element :d] : | hash_flow.rb:858:13:858:38 | call to reverse_merge [element :d] : | -| hash_flow.rb:858:33:858:37 | hash2 [element :f] : | hash_flow.rb:858:13:858:38 | call to reverse_merge [element :f] : | -| hash_flow.rb:859:11:859:15 | hash3 [element :a] : | hash_flow.rb:859:11:859:19 | ...[...] : | -| hash_flow.rb:859:11:859:19 | ...[...] : | hash_flow.rb:859:10:859:20 | ( ... ) | -| hash_flow.rb:861:11:861:15 | hash3 [element :c] : | hash_flow.rb:861:11:861:19 | ...[...] : | +| hash_flow.rb:843:11:843:15 | hash1 [element :f] : | hash_flow.rb:843:11:843:19 | ...[...] : | +| hash_flow.rb:843:11:843:19 | ...[...] : | hash_flow.rb:843:10:843:20 | ( ... ) | +| hash_flow.rb:850:12:850:22 | call to taint : | hash_flow.rb:860:13:860:17 | hash1 [element :a] : | +| hash_flow.rb:850:12:850:22 | call to taint : | hash_flow.rb:869:13:869:17 | hash1 [element :a] : | +| hash_flow.rb:852:12:852:22 | call to taint : | hash_flow.rb:860:13:860:17 | hash1 [element :c] : | +| hash_flow.rb:852:12:852:22 | call to taint : | hash_flow.rb:869:13:869:17 | hash1 [element :c] : | +| hash_flow.rb:855:12:855:22 | call to taint : | hash_flow.rb:860:33:860:37 | hash2 [element :d] : | +| hash_flow.rb:855:12:855:22 | call to taint : | hash_flow.rb:869:33:869:37 | hash2 [element :d] : | +| hash_flow.rb:857:12:857:22 | call to taint : | hash_flow.rb:860:33:860:37 | hash2 [element :f] : | +| hash_flow.rb:857:12:857:22 | call to taint : | hash_flow.rb:869:33:869:37 | hash2 [element :f] : | +| hash_flow.rb:860:13:860:17 | hash1 [element :a] : | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] : | +| hash_flow.rb:860:13:860:17 | hash1 [element :c] : | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] : | hash_flow.rb:861:11:861:15 | hash3 [element :a] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] : | hash_flow.rb:863:11:863:15 | hash3 [element :c] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] : | hash_flow.rb:864:11:864:15 | hash3 [element :d] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] : | hash_flow.rb:866:11:866:15 | hash3 [element :f] : | +| hash_flow.rb:860:33:860:37 | hash2 [element :d] : | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] : | +| hash_flow.rb:860:33:860:37 | hash2 [element :f] : | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] : | +| hash_flow.rb:861:11:861:15 | hash3 [element :a] : | hash_flow.rb:861:11:861:19 | ...[...] : | | hash_flow.rb:861:11:861:19 | ...[...] : | hash_flow.rb:861:10:861:20 | ( ... ) | -| hash_flow.rb:862:11:862:15 | hash3 [element :d] : | hash_flow.rb:862:11:862:19 | ...[...] : | -| hash_flow.rb:862:11:862:19 | ...[...] : | hash_flow.rb:862:10:862:20 | ( ... ) | -| hash_flow.rb:864:11:864:15 | hash3 [element :f] : | hash_flow.rb:864:11:864:19 | ...[...] : | +| hash_flow.rb:863:11:863:15 | hash3 [element :c] : | hash_flow.rb:863:11:863:19 | ...[...] : | +| hash_flow.rb:863:11:863:19 | ...[...] : | hash_flow.rb:863:10:863:20 | ( ... ) | +| hash_flow.rb:864:11:864:15 | hash3 [element :d] : | hash_flow.rb:864:11:864:19 | ...[...] : | | hash_flow.rb:864:11:864:19 | ...[...] : | hash_flow.rb:864:10:864:20 | ( ... ) | -| hash_flow.rb:867:13:867:17 | hash1 [element :a] : | hash_flow.rb:867:13:867:38 | call to with_defaults [element :a] : | -| hash_flow.rb:867:13:867:17 | hash1 [element :c] : | hash_flow.rb:867:13:867:38 | call to with_defaults [element :c] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :a] : | hash_flow.rb:868:11:868:15 | hash4 [element :a] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :c] : | hash_flow.rb:870:11:870:15 | hash4 [element :c] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :d] : | hash_flow.rb:871:11:871:15 | hash4 [element :d] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :f] : | hash_flow.rb:873:11:873:15 | hash4 [element :f] : | -| hash_flow.rb:867:33:867:37 | hash2 [element :d] : | hash_flow.rb:867:13:867:38 | call to with_defaults [element :d] : | -| hash_flow.rb:867:33:867:37 | hash2 [element :f] : | hash_flow.rb:867:13:867:38 | call to with_defaults [element :f] : | -| hash_flow.rb:868:11:868:15 | hash4 [element :a] : | hash_flow.rb:868:11:868:19 | ...[...] : | -| hash_flow.rb:868:11:868:19 | ...[...] : | hash_flow.rb:868:10:868:20 | ( ... ) | -| hash_flow.rb:870:11:870:15 | hash4 [element :c] : | hash_flow.rb:870:11:870:19 | ...[...] : | +| hash_flow.rb:866:11:866:15 | hash3 [element :f] : | hash_flow.rb:866:11:866:19 | ...[...] : | +| hash_flow.rb:866:11:866:19 | ...[...] : | hash_flow.rb:866:10:866:20 | ( ... ) | +| hash_flow.rb:869:13:869:17 | hash1 [element :a] : | hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] : | +| hash_flow.rb:869:13:869:17 | hash1 [element :c] : | hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] : | hash_flow.rb:870:11:870:15 | hash4 [element :a] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] : | hash_flow.rb:872:11:872:15 | hash4 [element :c] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] : | hash_flow.rb:873:11:873:15 | hash4 [element :d] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] : | hash_flow.rb:875:11:875:15 | hash4 [element :f] : | +| hash_flow.rb:869:33:869:37 | hash2 [element :d] : | hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] : | +| hash_flow.rb:869:33:869:37 | hash2 [element :f] : | hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] : | +| hash_flow.rb:870:11:870:15 | hash4 [element :a] : | hash_flow.rb:870:11:870:19 | ...[...] : | | hash_flow.rb:870:11:870:19 | ...[...] : | hash_flow.rb:870:10:870:20 | ( ... ) | -| hash_flow.rb:871:11:871:15 | hash4 [element :d] : | hash_flow.rb:871:11:871:19 | ...[...] : | -| hash_flow.rb:871:11:871:19 | ...[...] : | hash_flow.rb:871:10:871:20 | ( ... ) | -| hash_flow.rb:873:11:873:15 | hash4 [element :f] : | hash_flow.rb:873:11:873:19 | ...[...] : | +| hash_flow.rb:872:11:872:15 | hash4 [element :c] : | hash_flow.rb:872:11:872:19 | ...[...] : | +| hash_flow.rb:872:11:872:19 | ...[...] : | hash_flow.rb:872:10:872:20 | ( ... ) | +| hash_flow.rb:873:11:873:15 | hash4 [element :d] : | hash_flow.rb:873:11:873:19 | ...[...] : | | hash_flow.rb:873:11:873:19 | ...[...] : | hash_flow.rb:873:10:873:20 | ( ... ) | -| hash_flow.rb:880:12:880:22 | call to taint : | hash_flow.rb:890:12:890:16 | hash1 [element :a] : | -| hash_flow.rb:882:12:882:22 | call to taint : | hash_flow.rb:890:12:890:16 | hash1 [element :c] : | -| hash_flow.rb:885:12:885:22 | call to taint : | hash_flow.rb:890:33:890:37 | hash2 [element :d] : | -| hash_flow.rb:887:12:887:22 | call to taint : | hash_flow.rb:890:33:890:37 | hash2 [element :f] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :a] : | hash_flow.rb:898:11:898:15 | hash1 [element :a] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :c] : | hash_flow.rb:900:11:900:15 | hash1 [element :c] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :d] : | hash_flow.rb:901:11:901:15 | hash1 [element :d] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :f] : | hash_flow.rb:903:11:903:15 | hash1 [element :f] : | -| hash_flow.rb:890:12:890:16 | hash1 [element :a] : | hash_flow.rb:890:12:890:16 | [post] hash1 [element :a] : | -| hash_flow.rb:890:12:890:16 | hash1 [element :a] : | hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :a] : | -| hash_flow.rb:890:12:890:16 | hash1 [element :c] : | hash_flow.rb:890:12:890:16 | [post] hash1 [element :c] : | -| hash_flow.rb:890:12:890:16 | hash1 [element :c] : | hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :c] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :a] : | hash_flow.rb:891:11:891:14 | hash [element :a] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :c] : | hash_flow.rb:893:11:893:14 | hash [element :c] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :d] : | hash_flow.rb:894:11:894:14 | hash [element :d] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :f] : | hash_flow.rb:896:11:896:14 | hash [element :f] : | -| hash_flow.rb:890:33:890:37 | hash2 [element :d] : | hash_flow.rb:890:12:890:16 | [post] hash1 [element :d] : | -| hash_flow.rb:890:33:890:37 | hash2 [element :d] : | hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :d] : | -| hash_flow.rb:890:33:890:37 | hash2 [element :f] : | hash_flow.rb:890:12:890:16 | [post] hash1 [element :f] : | -| hash_flow.rb:890:33:890:37 | hash2 [element :f] : | hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :f] : | -| hash_flow.rb:891:11:891:14 | hash [element :a] : | hash_flow.rb:891:11:891:18 | ...[...] : | -| hash_flow.rb:891:11:891:18 | ...[...] : | hash_flow.rb:891:10:891:19 | ( ... ) | -| hash_flow.rb:893:11:893:14 | hash [element :c] : | hash_flow.rb:893:11:893:18 | ...[...] : | +| hash_flow.rb:875:11:875:15 | hash4 [element :f] : | hash_flow.rb:875:11:875:19 | ...[...] : | +| hash_flow.rb:875:11:875:19 | ...[...] : | hash_flow.rb:875:10:875:20 | ( ... ) | +| hash_flow.rb:882:12:882:22 | call to taint : | hash_flow.rb:892:12:892:16 | hash1 [element :a] : | +| hash_flow.rb:884:12:884:22 | call to taint : | hash_flow.rb:892:12:892:16 | hash1 [element :c] : | +| hash_flow.rb:887:12:887:22 | call to taint : | hash_flow.rb:892:33:892:37 | hash2 [element :d] : | +| hash_flow.rb:889:12:889:22 | call to taint : | hash_flow.rb:892:33:892:37 | hash2 [element :f] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] : | hash_flow.rb:900:11:900:15 | hash1 [element :a] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] : | hash_flow.rb:902:11:902:15 | hash1 [element :c] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] : | hash_flow.rb:903:11:903:15 | hash1 [element :d] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] : | hash_flow.rb:905:11:905:15 | hash1 [element :f] : | +| hash_flow.rb:892:12:892:16 | hash1 [element :a] : | hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] : | +| hash_flow.rb:892:12:892:16 | hash1 [element :a] : | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] : | +| hash_flow.rb:892:12:892:16 | hash1 [element :c] : | hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] : | +| hash_flow.rb:892:12:892:16 | hash1 [element :c] : | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] : | hash_flow.rb:893:11:893:14 | hash [element :a] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] : | hash_flow.rb:895:11:895:14 | hash [element :c] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] : | hash_flow.rb:896:11:896:14 | hash [element :d] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] : | hash_flow.rb:898:11:898:14 | hash [element :f] : | +| hash_flow.rb:892:33:892:37 | hash2 [element :d] : | hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] : | +| hash_flow.rb:892:33:892:37 | hash2 [element :d] : | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] : | +| hash_flow.rb:892:33:892:37 | hash2 [element :f] : | hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] : | +| hash_flow.rb:892:33:892:37 | hash2 [element :f] : | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] : | +| hash_flow.rb:893:11:893:14 | hash [element :a] : | hash_flow.rb:893:11:893:18 | ...[...] : | | hash_flow.rb:893:11:893:18 | ...[...] : | hash_flow.rb:893:10:893:19 | ( ... ) | -| hash_flow.rb:894:11:894:14 | hash [element :d] : | hash_flow.rb:894:11:894:18 | ...[...] : | -| hash_flow.rb:894:11:894:18 | ...[...] : | hash_flow.rb:894:10:894:19 | ( ... ) | -| hash_flow.rb:896:11:896:14 | hash [element :f] : | hash_flow.rb:896:11:896:18 | ...[...] : | +| hash_flow.rb:895:11:895:14 | hash [element :c] : | hash_flow.rb:895:11:895:18 | ...[...] : | +| hash_flow.rb:895:11:895:18 | ...[...] : | hash_flow.rb:895:10:895:19 | ( ... ) | +| hash_flow.rb:896:11:896:14 | hash [element :d] : | hash_flow.rb:896:11:896:18 | ...[...] : | | hash_flow.rb:896:11:896:18 | ...[...] : | hash_flow.rb:896:10:896:19 | ( ... ) | -| hash_flow.rb:898:11:898:15 | hash1 [element :a] : | hash_flow.rb:898:11:898:19 | ...[...] : | -| hash_flow.rb:898:11:898:19 | ...[...] : | hash_flow.rb:898:10:898:20 | ( ... ) | -| hash_flow.rb:900:11:900:15 | hash1 [element :c] : | hash_flow.rb:900:11:900:19 | ...[...] : | +| hash_flow.rb:898:11:898:14 | hash [element :f] : | hash_flow.rb:898:11:898:18 | ...[...] : | +| hash_flow.rb:898:11:898:18 | ...[...] : | hash_flow.rb:898:10:898:19 | ( ... ) | +| hash_flow.rb:900:11:900:15 | hash1 [element :a] : | hash_flow.rb:900:11:900:19 | ...[...] : | | hash_flow.rb:900:11:900:19 | ...[...] : | hash_flow.rb:900:10:900:20 | ( ... ) | -| hash_flow.rb:901:11:901:15 | hash1 [element :d] : | hash_flow.rb:901:11:901:19 | ...[...] : | -| hash_flow.rb:901:11:901:19 | ...[...] : | hash_flow.rb:901:10:901:20 | ( ... ) | -| hash_flow.rb:903:11:903:15 | hash1 [element :f] : | hash_flow.rb:903:11:903:19 | ...[...] : | +| hash_flow.rb:902:11:902:15 | hash1 [element :c] : | hash_flow.rb:902:11:902:19 | ...[...] : | +| hash_flow.rb:902:11:902:19 | ...[...] : | hash_flow.rb:902:10:902:20 | ( ... ) | +| hash_flow.rb:903:11:903:15 | hash1 [element :d] : | hash_flow.rb:903:11:903:19 | ...[...] : | | hash_flow.rb:903:11:903:19 | ...[...] : | hash_flow.rb:903:10:903:20 | ( ... ) | -| hash_flow.rb:910:12:910:22 | call to taint : | hash_flow.rb:920:12:920:16 | hash1 [element :a] : | -| hash_flow.rb:912:12:912:22 | call to taint : | hash_flow.rb:920:12:920:16 | hash1 [element :c] : | -| hash_flow.rb:915:12:915:22 | call to taint : | hash_flow.rb:920:33:920:37 | hash2 [element :d] : | -| hash_flow.rb:917:12:917:22 | call to taint : | hash_flow.rb:920:33:920:37 | hash2 [element :f] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :a] : | hash_flow.rb:928:11:928:15 | hash1 [element :a] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :c] : | hash_flow.rb:930:11:930:15 | hash1 [element :c] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :d] : | hash_flow.rb:931:11:931:15 | hash1 [element :d] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :f] : | hash_flow.rb:933:11:933:15 | hash1 [element :f] : | -| hash_flow.rb:920:12:920:16 | hash1 [element :a] : | hash_flow.rb:920:12:920:16 | [post] hash1 [element :a] : | -| hash_flow.rb:920:12:920:16 | hash1 [element :a] : | hash_flow.rb:920:12:920:38 | call to with_defaults! [element :a] : | -| hash_flow.rb:920:12:920:16 | hash1 [element :c] : | hash_flow.rb:920:12:920:16 | [post] hash1 [element :c] : | -| hash_flow.rb:920:12:920:16 | hash1 [element :c] : | hash_flow.rb:920:12:920:38 | call to with_defaults! [element :c] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :a] : | hash_flow.rb:921:11:921:14 | hash [element :a] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :c] : | hash_flow.rb:923:11:923:14 | hash [element :c] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :d] : | hash_flow.rb:924:11:924:14 | hash [element :d] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :f] : | hash_flow.rb:926:11:926:14 | hash [element :f] : | -| hash_flow.rb:920:33:920:37 | hash2 [element :d] : | hash_flow.rb:920:12:920:16 | [post] hash1 [element :d] : | -| hash_flow.rb:920:33:920:37 | hash2 [element :d] : | hash_flow.rb:920:12:920:38 | call to with_defaults! [element :d] : | -| hash_flow.rb:920:33:920:37 | hash2 [element :f] : | hash_flow.rb:920:12:920:16 | [post] hash1 [element :f] : | -| hash_flow.rb:920:33:920:37 | hash2 [element :f] : | hash_flow.rb:920:12:920:38 | call to with_defaults! [element :f] : | -| hash_flow.rb:921:11:921:14 | hash [element :a] : | hash_flow.rb:921:11:921:18 | ...[...] : | -| hash_flow.rb:921:11:921:18 | ...[...] : | hash_flow.rb:921:10:921:19 | ( ... ) | -| hash_flow.rb:923:11:923:14 | hash [element :c] : | hash_flow.rb:923:11:923:18 | ...[...] : | +| hash_flow.rb:905:11:905:15 | hash1 [element :f] : | hash_flow.rb:905:11:905:19 | ...[...] : | +| hash_flow.rb:905:11:905:19 | ...[...] : | hash_flow.rb:905:10:905:20 | ( ... ) | +| hash_flow.rb:912:12:912:22 | call to taint : | hash_flow.rb:922:12:922:16 | hash1 [element :a] : | +| hash_flow.rb:914:12:914:22 | call to taint : | hash_flow.rb:922:12:922:16 | hash1 [element :c] : | +| hash_flow.rb:917:12:917:22 | call to taint : | hash_flow.rb:922:33:922:37 | hash2 [element :d] : | +| hash_flow.rb:919:12:919:22 | call to taint : | hash_flow.rb:922:33:922:37 | hash2 [element :f] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] : | hash_flow.rb:930:11:930:15 | hash1 [element :a] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] : | hash_flow.rb:932:11:932:15 | hash1 [element :c] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] : | hash_flow.rb:933:11:933:15 | hash1 [element :d] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] : | hash_flow.rb:935:11:935:15 | hash1 [element :f] : | +| hash_flow.rb:922:12:922:16 | hash1 [element :a] : | hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] : | +| hash_flow.rb:922:12:922:16 | hash1 [element :a] : | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] : | +| hash_flow.rb:922:12:922:16 | hash1 [element :c] : | hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] : | +| hash_flow.rb:922:12:922:16 | hash1 [element :c] : | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] : | hash_flow.rb:923:11:923:14 | hash [element :a] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] : | hash_flow.rb:925:11:925:14 | hash [element :c] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] : | hash_flow.rb:926:11:926:14 | hash [element :d] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] : | hash_flow.rb:928:11:928:14 | hash [element :f] : | +| hash_flow.rb:922:33:922:37 | hash2 [element :d] : | hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] : | +| hash_flow.rb:922:33:922:37 | hash2 [element :d] : | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] : | +| hash_flow.rb:922:33:922:37 | hash2 [element :f] : | hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] : | +| hash_flow.rb:922:33:922:37 | hash2 [element :f] : | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] : | +| hash_flow.rb:923:11:923:14 | hash [element :a] : | hash_flow.rb:923:11:923:18 | ...[...] : | | hash_flow.rb:923:11:923:18 | ...[...] : | hash_flow.rb:923:10:923:19 | ( ... ) | -| hash_flow.rb:924:11:924:14 | hash [element :d] : | hash_flow.rb:924:11:924:18 | ...[...] : | -| hash_flow.rb:924:11:924:18 | ...[...] : | hash_flow.rb:924:10:924:19 | ( ... ) | -| hash_flow.rb:926:11:926:14 | hash [element :f] : | hash_flow.rb:926:11:926:18 | ...[...] : | +| hash_flow.rb:925:11:925:14 | hash [element :c] : | hash_flow.rb:925:11:925:18 | ...[...] : | +| hash_flow.rb:925:11:925:18 | ...[...] : | hash_flow.rb:925:10:925:19 | ( ... ) | +| hash_flow.rb:926:11:926:14 | hash [element :d] : | hash_flow.rb:926:11:926:18 | ...[...] : | | hash_flow.rb:926:11:926:18 | ...[...] : | hash_flow.rb:926:10:926:19 | ( ... ) | -| hash_flow.rb:928:11:928:15 | hash1 [element :a] : | hash_flow.rb:928:11:928:19 | ...[...] : | -| hash_flow.rb:928:11:928:19 | ...[...] : | hash_flow.rb:928:10:928:20 | ( ... ) | -| hash_flow.rb:930:11:930:15 | hash1 [element :c] : | hash_flow.rb:930:11:930:19 | ...[...] : | +| hash_flow.rb:928:11:928:14 | hash [element :f] : | hash_flow.rb:928:11:928:18 | ...[...] : | +| hash_flow.rb:928:11:928:18 | ...[...] : | hash_flow.rb:928:10:928:19 | ( ... ) | +| hash_flow.rb:930:11:930:15 | hash1 [element :a] : | hash_flow.rb:930:11:930:19 | ...[...] : | | hash_flow.rb:930:11:930:19 | ...[...] : | hash_flow.rb:930:10:930:20 | ( ... ) | -| hash_flow.rb:931:11:931:15 | hash1 [element :d] : | hash_flow.rb:931:11:931:19 | ...[...] : | -| hash_flow.rb:931:11:931:19 | ...[...] : | hash_flow.rb:931:10:931:20 | ( ... ) | -| hash_flow.rb:933:11:933:15 | hash1 [element :f] : | hash_flow.rb:933:11:933:19 | ...[...] : | +| hash_flow.rb:932:11:932:15 | hash1 [element :c] : | hash_flow.rb:932:11:932:19 | ...[...] : | +| hash_flow.rb:932:11:932:19 | ...[...] : | hash_flow.rb:932:10:932:20 | ( ... ) | +| hash_flow.rb:933:11:933:15 | hash1 [element :d] : | hash_flow.rb:933:11:933:19 | ...[...] : | | hash_flow.rb:933:11:933:19 | ...[...] : | hash_flow.rb:933:10:933:20 | ( ... ) | -| hash_flow.rb:940:12:940:22 | call to taint : | hash_flow.rb:950:12:950:16 | hash1 [element :a] : | -| hash_flow.rb:942:12:942:22 | call to taint : | hash_flow.rb:950:12:950:16 | hash1 [element :c] : | -| hash_flow.rb:945:12:945:22 | call to taint : | hash_flow.rb:950:33:950:37 | hash2 [element :d] : | -| hash_flow.rb:947:12:947:22 | call to taint : | hash_flow.rb:950:33:950:37 | hash2 [element :f] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :a] : | hash_flow.rb:958:11:958:15 | hash1 [element :a] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :c] : | hash_flow.rb:960:11:960:15 | hash1 [element :c] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :d] : | hash_flow.rb:961:11:961:15 | hash1 [element :d] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :f] : | hash_flow.rb:963:11:963:15 | hash1 [element :f] : | -| hash_flow.rb:950:12:950:16 | hash1 [element :a] : | hash_flow.rb:950:12:950:16 | [post] hash1 [element :a] : | -| hash_flow.rb:950:12:950:16 | hash1 [element :a] : | hash_flow.rb:950:12:950:38 | call to with_defaults! [element :a] : | -| hash_flow.rb:950:12:950:16 | hash1 [element :c] : | hash_flow.rb:950:12:950:16 | [post] hash1 [element :c] : | -| hash_flow.rb:950:12:950:16 | hash1 [element :c] : | hash_flow.rb:950:12:950:38 | call to with_defaults! [element :c] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :a] : | hash_flow.rb:951:11:951:14 | hash [element :a] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :c] : | hash_flow.rb:953:11:953:14 | hash [element :c] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :d] : | hash_flow.rb:954:11:954:14 | hash [element :d] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :f] : | hash_flow.rb:956:11:956:14 | hash [element :f] : | -| hash_flow.rb:950:33:950:37 | hash2 [element :d] : | hash_flow.rb:950:12:950:16 | [post] hash1 [element :d] : | -| hash_flow.rb:950:33:950:37 | hash2 [element :d] : | hash_flow.rb:950:12:950:38 | call to with_defaults! [element :d] : | -| hash_flow.rb:950:33:950:37 | hash2 [element :f] : | hash_flow.rb:950:12:950:16 | [post] hash1 [element :f] : | -| hash_flow.rb:950:33:950:37 | hash2 [element :f] : | hash_flow.rb:950:12:950:38 | call to with_defaults! [element :f] : | -| hash_flow.rb:951:11:951:14 | hash [element :a] : | hash_flow.rb:951:11:951:18 | ...[...] : | -| hash_flow.rb:951:11:951:18 | ...[...] : | hash_flow.rb:951:10:951:19 | ( ... ) | -| hash_flow.rb:953:11:953:14 | hash [element :c] : | hash_flow.rb:953:11:953:18 | ...[...] : | +| hash_flow.rb:935:11:935:15 | hash1 [element :f] : | hash_flow.rb:935:11:935:19 | ...[...] : | +| hash_flow.rb:935:11:935:19 | ...[...] : | hash_flow.rb:935:10:935:20 | ( ... ) | +| hash_flow.rb:942:12:942:22 | call to taint : | hash_flow.rb:952:12:952:16 | hash1 [element :a] : | +| hash_flow.rb:944:12:944:22 | call to taint : | hash_flow.rb:952:12:952:16 | hash1 [element :c] : | +| hash_flow.rb:947:12:947:22 | call to taint : | hash_flow.rb:952:33:952:37 | hash2 [element :d] : | +| hash_flow.rb:949:12:949:22 | call to taint : | hash_flow.rb:952:33:952:37 | hash2 [element :f] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] : | hash_flow.rb:960:11:960:15 | hash1 [element :a] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] : | hash_flow.rb:962:11:962:15 | hash1 [element :c] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] : | hash_flow.rb:963:11:963:15 | hash1 [element :d] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] : | hash_flow.rb:965:11:965:15 | hash1 [element :f] : | +| hash_flow.rb:952:12:952:16 | hash1 [element :a] : | hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] : | +| hash_flow.rb:952:12:952:16 | hash1 [element :a] : | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] : | +| hash_flow.rb:952:12:952:16 | hash1 [element :c] : | hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] : | +| hash_flow.rb:952:12:952:16 | hash1 [element :c] : | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] : | hash_flow.rb:953:11:953:14 | hash [element :a] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] : | hash_flow.rb:955:11:955:14 | hash [element :c] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] : | hash_flow.rb:956:11:956:14 | hash [element :d] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] : | hash_flow.rb:958:11:958:14 | hash [element :f] : | +| hash_flow.rb:952:33:952:37 | hash2 [element :d] : | hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] : | +| hash_flow.rb:952:33:952:37 | hash2 [element :d] : | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] : | +| hash_flow.rb:952:33:952:37 | hash2 [element :f] : | hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] : | +| hash_flow.rb:952:33:952:37 | hash2 [element :f] : | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] : | +| hash_flow.rb:953:11:953:14 | hash [element :a] : | hash_flow.rb:953:11:953:18 | ...[...] : | | hash_flow.rb:953:11:953:18 | ...[...] : | hash_flow.rb:953:10:953:19 | ( ... ) | -| hash_flow.rb:954:11:954:14 | hash [element :d] : | hash_flow.rb:954:11:954:18 | ...[...] : | -| hash_flow.rb:954:11:954:18 | ...[...] : | hash_flow.rb:954:10:954:19 | ( ... ) | -| hash_flow.rb:956:11:956:14 | hash [element :f] : | hash_flow.rb:956:11:956:18 | ...[...] : | +| hash_flow.rb:955:11:955:14 | hash [element :c] : | hash_flow.rb:955:11:955:18 | ...[...] : | +| hash_flow.rb:955:11:955:18 | ...[...] : | hash_flow.rb:955:10:955:19 | ( ... ) | +| hash_flow.rb:956:11:956:14 | hash [element :d] : | hash_flow.rb:956:11:956:18 | ...[...] : | | hash_flow.rb:956:11:956:18 | ...[...] : | hash_flow.rb:956:10:956:19 | ( ... ) | -| hash_flow.rb:958:11:958:15 | hash1 [element :a] : | hash_flow.rb:958:11:958:19 | ...[...] : | -| hash_flow.rb:958:11:958:19 | ...[...] : | hash_flow.rb:958:10:958:20 | ( ... ) | -| hash_flow.rb:960:11:960:15 | hash1 [element :c] : | hash_flow.rb:960:11:960:19 | ...[...] : | +| hash_flow.rb:958:11:958:14 | hash [element :f] : | hash_flow.rb:958:11:958:18 | ...[...] : | +| hash_flow.rb:958:11:958:18 | ...[...] : | hash_flow.rb:958:10:958:19 | ( ... ) | +| hash_flow.rb:960:11:960:15 | hash1 [element :a] : | hash_flow.rb:960:11:960:19 | ...[...] : | | hash_flow.rb:960:11:960:19 | ...[...] : | hash_flow.rb:960:10:960:20 | ( ... ) | -| hash_flow.rb:961:11:961:15 | hash1 [element :d] : | hash_flow.rb:961:11:961:19 | ...[...] : | -| hash_flow.rb:961:11:961:19 | ...[...] : | hash_flow.rb:961:10:961:20 | ( ... ) | -| hash_flow.rb:963:11:963:15 | hash1 [element :f] : | hash_flow.rb:963:11:963:19 | ...[...] : | +| hash_flow.rb:962:11:962:15 | hash1 [element :c] : | hash_flow.rb:962:11:962:19 | ...[...] : | +| hash_flow.rb:962:11:962:19 | ...[...] : | hash_flow.rb:962:10:962:20 | ( ... ) | +| hash_flow.rb:963:11:963:15 | hash1 [element :d] : | hash_flow.rb:963:11:963:19 | ...[...] : | | hash_flow.rb:963:11:963:19 | ...[...] : | hash_flow.rb:963:10:963:20 | ( ... ) | +| hash_flow.rb:965:11:965:15 | hash1 [element :f] : | hash_flow.rb:965:11:965:19 | ...[...] : | +| hash_flow.rb:965:11:965:19 | ...[...] : | hash_flow.rb:965:10:965:20 | ( ... ) | nodes | hash_flow.rb:11:15:11:24 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:13:12:13:21 | call to taint : | semmle.label | call to taint : | @@ -1220,380 +1226,383 @@ nodes | hash_flow.rb:633:15:633:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:635:15:635:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:637:5:637:8 | [post] hash [element] : | semmle.label | [post] hash [element] : | -| hash_flow.rb:637:5:637:8 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:637:5:637:8 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:638:10:638:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:638:11:638:14 | hash [element] : | semmle.label | hash [element] : | -| hash_flow.rb:638:11:638:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:639:10:639:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:639:11:639:14 | hash [element] : | semmle.label | hash [element] : | -| hash_flow.rb:639:11:639:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:637:15:637:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:639:5:639:8 | [post] hash [element] : | semmle.label | [post] hash [element] : | +| hash_flow.rb:639:5:639:8 | hash [element :a] : | semmle.label | hash [element :a] : | +| hash_flow.rb:639:5:639:8 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:639:5:639:8 | hash [element] : | semmle.label | hash [element] : | | hash_flow.rb:640:10:640:20 | ( ... ) | semmle.label | ( ... ) | | hash_flow.rb:640:11:640:14 | hash [element] : | semmle.label | hash [element] : | | hash_flow.rb:640:11:640:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:647:15:647:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:641:10:641:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:641:11:641:14 | hash [element] : | semmle.label | hash [element] : | +| hash_flow.rb:641:11:641:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:642:10:642:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:642:11:642:14 | hash [element] : | semmle.label | hash [element] : | +| hash_flow.rb:642:11:642:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:649:15:649:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:651:9:651:12 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:651:9:651:12 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:651:9:654:7 | call to transform_values [element] : | semmle.label | call to transform_values [element] : | -| hash_flow.rb:651:35:651:39 | value : | semmle.label | value : | -| hash_flow.rb:652:14:652:18 | value | semmle.label | value | -| hash_flow.rb:653:9:653:19 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:655:10:655:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:655:11:655:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:655:11:655:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:656:10:656:16 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:656:11:656:11 | b [element] : | semmle.label | b [element] : | -| hash_flow.rb:656:11:656:15 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:663:15:663:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:651:15:651:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:653:9:653:12 | hash [element :a] : | semmle.label | hash [element :a] : | +| hash_flow.rb:653:9:653:12 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:653:9:656:7 | call to transform_values [element] : | semmle.label | call to transform_values [element] : | +| hash_flow.rb:653:35:653:39 | value : | semmle.label | value : | +| hash_flow.rb:654:14:654:18 | value | semmle.label | value | +| hash_flow.rb:655:9:655:19 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:657:10:657:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:657:11:657:14 | hash [element :a] : | semmle.label | hash [element :a] : | +| hash_flow.rb:657:11:657:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:658:10:658:16 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:658:11:658:11 | b [element] : | semmle.label | b [element] : | +| hash_flow.rb:658:11:658:15 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:665:15:665:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:667:5:667:8 | [post] hash [element] : | semmle.label | [post] hash [element] : | -| hash_flow.rb:667:5:667:8 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:667:5:667:8 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:667:32:667:36 | value : | semmle.label | value : | -| hash_flow.rb:668:14:668:18 | value | semmle.label | value | -| hash_flow.rb:669:9:669:19 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:671:10:671:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:671:11:671:14 | hash [element] : | semmle.label | hash [element] : | -| hash_flow.rb:671:11:671:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:678:15:678:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:667:15:667:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:669:5:669:8 | [post] hash [element] : | semmle.label | [post] hash [element] : | +| hash_flow.rb:669:5:669:8 | hash [element :a] : | semmle.label | hash [element :a] : | +| hash_flow.rb:669:5:669:8 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:669:32:669:36 | value : | semmle.label | value : | +| hash_flow.rb:670:14:670:18 | value | semmle.label | value | +| hash_flow.rb:671:9:671:19 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:673:10:673:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:673:11:673:14 | hash [element] : | semmle.label | hash [element] : | +| hash_flow.rb:673:11:673:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:680:15:680:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:683:15:683:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:682:15:682:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:685:15:685:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | -| hash_flow.rb:687:12:687:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:687:12:687:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:687:12:691:7 | call to update [element :a] : | semmle.label | call to update [element :a] : | -| hash_flow.rb:687:12:691:7 | call to update [element :c] : | semmle.label | call to update [element :c] : | -| hash_flow.rb:687:12:691:7 | call to update [element :d] : | semmle.label | call to update [element :d] : | -| hash_flow.rb:687:12:691:7 | call to update [element :f] : | semmle.label | call to update [element :f] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:687:25:687:29 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:687:41:687:49 | old_value : | semmle.label | old_value : | -| hash_flow.rb:687:52:687:60 | new_value : | semmle.label | new_value : | -| hash_flow.rb:689:14:689:22 | old_value | semmle.label | old_value | -| hash_flow.rb:690:14:690:22 | new_value | semmle.label | new_value | -| hash_flow.rb:692:10:692:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:692:11:692:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:692:11:692:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:687:15:687:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:689:12:693:7 | call to update [element :a] : | semmle.label | call to update [element :a] : | +| hash_flow.rb:689:12:693:7 | call to update [element :c] : | semmle.label | call to update [element :c] : | +| hash_flow.rb:689:12:693:7 | call to update [element :d] : | semmle.label | call to update [element :d] : | +| hash_flow.rb:689:12:693:7 | call to update [element :f] : | semmle.label | call to update [element :f] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | +| hash_flow.rb:689:41:689:49 | old_value : | semmle.label | old_value : | +| hash_flow.rb:689:52:689:60 | new_value : | semmle.label | new_value : | +| hash_flow.rb:691:14:691:22 | old_value | semmle.label | old_value | +| hash_flow.rb:692:14:692:22 | new_value | semmle.label | new_value | | hash_flow.rb:694:10:694:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:694:11:694:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:694:11:694:14 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:694:11:694:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:695:10:695:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:695:11:695:14 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:695:11:695:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:696:10:696:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:696:11:696:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:696:11:696:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:697:10:697:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:697:11:697:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:697:11:697:14 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:697:11:697:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:699:10:699:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:699:11:699:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:699:11:699:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:699:10:699:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:699:11:699:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:699:11:699:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:701:10:701:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:701:11:701:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:701:11:701:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | | hash_flow.rb:701:11:701:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:702:10:702:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:702:11:702:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | -| hash_flow.rb:702:11:702:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:703:10:703:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:703:11:703:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:703:11:703:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:704:10:704:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:704:11:704:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:704:11:704:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | | hash_flow.rb:704:11:704:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:711:15:711:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:706:10:706:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:706:11:706:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:706:11:706:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:713:15:713:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:715:9:715:12 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:715:9:715:12 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:715:9:715:19 | call to values [element] : | semmle.label | call to values [element] : | -| hash_flow.rb:716:10:716:15 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:716:11:716:11 | a [element] : | semmle.label | a [element] : | -| hash_flow.rb:716:11:716:14 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:723:15:723:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:715:15:715:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:717:9:717:12 | hash [element :a] : | semmle.label | hash [element :a] : | +| hash_flow.rb:717:9:717:12 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:717:9:717:19 | call to values [element] : | semmle.label | call to values [element] : | +| hash_flow.rb:718:10:718:15 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:718:11:718:11 | a [element] : | semmle.label | a [element] : | +| hash_flow.rb:718:11:718:14 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:725:15:725:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:727:9:727:12 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:727:9:727:26 | call to values_at [element 0] : | semmle.label | call to values_at [element 0] : | -| hash_flow.rb:728:10:728:10 | b [element 0] : | semmle.label | b [element 0] : | -| hash_flow.rb:728:10:728:13 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:727:15:727:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:729:9:729:12 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:729:9:729:12 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:729:9:729:31 | call to fetch_values [element] : | semmle.label | call to fetch_values [element] : | -| hash_flow.rb:730:10:730:10 | b [element] : | semmle.label | b [element] : | +| hash_flow.rb:729:9:729:26 | call to values_at [element 0] : | semmle.label | call to values_at [element 0] : | +| hash_flow.rb:730:10:730:10 | b [element 0] : | semmle.label | b [element 0] : | | hash_flow.rb:730:10:730:13 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:737:15:737:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:731:9:731:12 | hash [element :a] : | semmle.label | hash [element :a] : | +| hash_flow.rb:731:9:731:12 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:731:9:731:31 | call to fetch_values [element] : | semmle.label | call to fetch_values [element] : | +| hash_flow.rb:732:10:732:10 | b [element] : | semmle.label | b [element] : | +| hash_flow.rb:732:10:732:13 | ...[...] | semmle.label | ...[...] | | hash_flow.rb:739:15:739:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:742:15:742:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:741:15:741:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:744:15:744:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:746:14:746:20 | ** ... [element :a] : | semmle.label | ** ... [element :a] : | -| hash_flow.rb:746:14:746:20 | ** ... [element :c] : | semmle.label | ** ... [element :c] : | -| hash_flow.rb:746:16:746:20 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:746:16:746:20 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:746:29:746:39 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:746:42:746:48 | ** ... [element :d] : | semmle.label | ** ... [element :d] : | -| hash_flow.rb:746:42:746:48 | ** ... [element :f] : | semmle.label | ** ... [element :f] : | -| hash_flow.rb:746:44:746:48 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:746:44:746:48 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:747:10:747:13 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:747:10:747:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:749:10:749:13 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:746:15:746:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:748:14:748:20 | ** ... [element :a] : | semmle.label | ** ... [element :a] : | +| hash_flow.rb:748:14:748:20 | ** ... [element :c] : | semmle.label | ** ... [element :c] : | +| hash_flow.rb:748:16:748:20 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:748:16:748:20 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:748:29:748:39 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:748:42:748:48 | ** ... [element :d] : | semmle.label | ** ... [element :d] : | +| hash_flow.rb:748:42:748:48 | ** ... [element :f] : | semmle.label | ** ... [element :f] : | +| hash_flow.rb:748:44:748:48 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:748:44:748:48 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | +| hash_flow.rb:749:10:749:13 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:749:10:749:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:750:10:750:13 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:750:10:750:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:752:10:752:13 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:751:10:751:13 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:751:10:751:17 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:752:10:752:13 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:752:10:752:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:753:10:753:13 | hash [element :g] : | semmle.label | hash [element :g] : | -| hash_flow.rb:753:10:753:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:761:15:761:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:754:10:754:13 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:754:10:754:17 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:755:10:755:13 | hash [element :g] : | semmle.label | hash [element :g] : | +| hash_flow.rb:755:10:755:17 | ...[...] | semmle.label | ...[...] | | hash_flow.rb:763:15:763:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:764:15:764:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:767:10:767:13 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:767:10:767:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:769:10:769:13 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:765:15:765:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:766:15:766:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:769:10:769:13 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:769:10:769:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:770:10:770:13 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:770:10:770:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:772:9:772:12 | [post] hash [element :c] : | semmle.label | [post] hash [element :c] : | -| hash_flow.rb:772:9:772:12 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:772:9:772:31 | call to except! [element :c] : | semmle.label | call to except! [element :c] : | -| hash_flow.rb:776:10:776:10 | x [element :c] : | semmle.label | x [element :c] : | -| hash_flow.rb:776:10:776:14 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:781:10:781:13 | hash [element :c] : | semmle.label | hash [element :c] : | -| hash_flow.rb:781:10:781:17 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:789:15:789:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:771:10:771:13 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:771:10:771:17 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:772:10:772:13 | hash [element :d] : | semmle.label | hash [element :d] : | +| hash_flow.rb:772:10:772:17 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:774:9:774:12 | [post] hash [element :c] : | semmle.label | [post] hash [element :c] : | +| hash_flow.rb:774:9:774:12 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:774:9:774:31 | call to except! [element :c] : | semmle.label | call to except! [element :c] : | +| hash_flow.rb:778:10:778:10 | x [element :c] : | semmle.label | x [element :c] : | +| hash_flow.rb:778:10:778:14 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:783:10:783:13 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:783:10:783:17 | ...[...] | semmle.label | ...[...] | | hash_flow.rb:791:15:791:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:794:15:794:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:793:15:793:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:796:15:796:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:798:12:798:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:798:12:798:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :a] : | semmle.label | call to deep_merge [element :a] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :c] : | semmle.label | call to deep_merge [element :c] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :d] : | semmle.label | call to deep_merge [element :d] : | -| hash_flow.rb:798:12:802:7 | call to deep_merge [element :f] : | semmle.label | call to deep_merge [element :f] : | -| hash_flow.rb:798:29:798:33 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:798:29:798:33 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:798:45:798:53 | old_value : | semmle.label | old_value : | -| hash_flow.rb:798:56:798:64 | new_value : | semmle.label | new_value : | -| hash_flow.rb:800:14:800:22 | old_value | semmle.label | old_value | -| hash_flow.rb:801:14:801:22 | new_value | semmle.label | new_value | -| hash_flow.rb:803:10:803:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:803:11:803:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:803:11:803:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:798:15:798:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] : | semmle.label | call to deep_merge [element :a] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] : | semmle.label | call to deep_merge [element :c] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] : | semmle.label | call to deep_merge [element :d] : | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] : | semmle.label | call to deep_merge [element :f] : | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | +| hash_flow.rb:800:45:800:53 | old_value : | semmle.label | old_value : | +| hash_flow.rb:800:56:800:64 | new_value : | semmle.label | new_value : | +| hash_flow.rb:802:14:802:22 | old_value | semmle.label | old_value | +| hash_flow.rb:803:14:803:22 | new_value | semmle.label | new_value | | hash_flow.rb:805:10:805:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:805:11:805:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:805:11:805:14 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:805:11:805:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:806:10:806:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:806:11:806:14 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:806:11:806:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:807:10:807:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:807:11:807:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:807:11:807:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:808:10:808:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:808:11:808:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:808:11:808:14 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:808:11:808:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:815:15:815:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:810:10:810:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:810:11:810:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:810:11:810:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:817:15:817:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:820:15:820:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:819:15:819:25 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:822:15:822:25 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | -| hash_flow.rb:824:12:824:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:824:12:824:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :a] : | semmle.label | call to deep_merge! [element :a] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :c] : | semmle.label | call to deep_merge! [element :c] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :d] : | semmle.label | call to deep_merge! [element :d] : | -| hash_flow.rb:824:12:828:7 | call to deep_merge! [element :f] : | semmle.label | call to deep_merge! [element :f] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:824:30:824:34 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:824:46:824:54 | old_value : | semmle.label | old_value : | -| hash_flow.rb:824:57:824:65 | new_value : | semmle.label | new_value : | -| hash_flow.rb:826:14:826:22 | old_value | semmle.label | old_value | -| hash_flow.rb:827:14:827:22 | new_value | semmle.label | new_value | -| hash_flow.rb:829:10:829:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:829:11:829:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:829:11:829:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:824:15:824:25 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] : | semmle.label | call to deep_merge! [element :a] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] : | semmle.label | call to deep_merge! [element :c] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] : | semmle.label | call to deep_merge! [element :d] : | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] : | semmle.label | call to deep_merge! [element :f] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | +| hash_flow.rb:826:46:826:54 | old_value : | semmle.label | old_value : | +| hash_flow.rb:826:57:826:65 | new_value : | semmle.label | new_value : | +| hash_flow.rb:828:14:828:22 | old_value | semmle.label | old_value | +| hash_flow.rb:829:14:829:22 | new_value | semmle.label | new_value | | hash_flow.rb:831:10:831:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:831:11:831:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:831:11:831:14 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:831:11:831:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:832:10:832:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:832:11:832:14 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:832:11:832:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:833:10:833:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:833:11:833:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:833:11:833:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:834:10:834:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:834:11:834:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:834:11:834:14 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:834:11:834:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:836:10:836:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:836:11:836:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:836:11:836:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:836:10:836:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:836:11:836:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:836:11:836:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:838:10:838:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:838:11:838:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:838:11:838:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | | hash_flow.rb:838:11:838:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:839:10:839:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:839:11:839:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | -| hash_flow.rb:839:11:839:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:840:10:840:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:840:11:840:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:840:11:840:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:841:10:841:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:841:11:841:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:841:11:841:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | | hash_flow.rb:841:11:841:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:848:12:848:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:843:10:843:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:843:11:843:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:843:11:843:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:850:12:850:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:853:12:853:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:852:12:852:22 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:855:12:855:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:858:13:858:17 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:858:13:858:17 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :a] : | semmle.label | call to reverse_merge [element :a] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :c] : | semmle.label | call to reverse_merge [element :c] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :d] : | semmle.label | call to reverse_merge [element :d] : | -| hash_flow.rb:858:13:858:38 | call to reverse_merge [element :f] : | semmle.label | call to reverse_merge [element :f] : | -| hash_flow.rb:858:33:858:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:858:33:858:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:859:10:859:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:859:11:859:15 | hash3 [element :a] : | semmle.label | hash3 [element :a] : | -| hash_flow.rb:859:11:859:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:857:12:857:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:860:13:860:17 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:860:13:860:17 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] : | semmle.label | call to reverse_merge [element :a] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] : | semmle.label | call to reverse_merge [element :c] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] : | semmle.label | call to reverse_merge [element :d] : | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] : | semmle.label | call to reverse_merge [element :f] : | +| hash_flow.rb:860:33:860:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:860:33:860:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | | hash_flow.rb:861:10:861:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:861:11:861:15 | hash3 [element :c] : | semmle.label | hash3 [element :c] : | +| hash_flow.rb:861:11:861:15 | hash3 [element :a] : | semmle.label | hash3 [element :a] : | | hash_flow.rb:861:11:861:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:862:10:862:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:862:11:862:15 | hash3 [element :d] : | semmle.label | hash3 [element :d] : | -| hash_flow.rb:862:11:862:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:863:10:863:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:863:11:863:15 | hash3 [element :c] : | semmle.label | hash3 [element :c] : | +| hash_flow.rb:863:11:863:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:864:10:864:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:864:11:864:15 | hash3 [element :f] : | semmle.label | hash3 [element :f] : | +| hash_flow.rb:864:11:864:15 | hash3 [element :d] : | semmle.label | hash3 [element :d] : | | hash_flow.rb:864:11:864:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:867:13:867:17 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:867:13:867:17 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :a] : | semmle.label | call to with_defaults [element :a] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :c] : | semmle.label | call to with_defaults [element :c] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :d] : | semmle.label | call to with_defaults [element :d] : | -| hash_flow.rb:867:13:867:38 | call to with_defaults [element :f] : | semmle.label | call to with_defaults [element :f] : | -| hash_flow.rb:867:33:867:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:867:33:867:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:868:10:868:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:868:11:868:15 | hash4 [element :a] : | semmle.label | hash4 [element :a] : | -| hash_flow.rb:868:11:868:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:866:10:866:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:866:11:866:15 | hash3 [element :f] : | semmle.label | hash3 [element :f] : | +| hash_flow.rb:866:11:866:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:869:13:869:17 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:869:13:869:17 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] : | semmle.label | call to with_defaults [element :a] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] : | semmle.label | call to with_defaults [element :c] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] : | semmle.label | call to with_defaults [element :d] : | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] : | semmle.label | call to with_defaults [element :f] : | +| hash_flow.rb:869:33:869:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:869:33:869:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | | hash_flow.rb:870:10:870:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:870:11:870:15 | hash4 [element :c] : | semmle.label | hash4 [element :c] : | +| hash_flow.rb:870:11:870:15 | hash4 [element :a] : | semmle.label | hash4 [element :a] : | | hash_flow.rb:870:11:870:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:871:10:871:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:871:11:871:15 | hash4 [element :d] : | semmle.label | hash4 [element :d] : | -| hash_flow.rb:871:11:871:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:872:10:872:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:872:11:872:15 | hash4 [element :c] : | semmle.label | hash4 [element :c] : | +| hash_flow.rb:872:11:872:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:873:10:873:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:873:11:873:15 | hash4 [element :f] : | semmle.label | hash4 [element :f] : | +| hash_flow.rb:873:11:873:15 | hash4 [element :d] : | semmle.label | hash4 [element :d] : | | hash_flow.rb:873:11:873:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:880:12:880:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:875:10:875:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:875:11:875:15 | hash4 [element :f] : | semmle.label | hash4 [element :f] : | +| hash_flow.rb:875:11:875:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:882:12:882:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:885:12:885:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:884:12:884:22 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:887:12:887:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | -| hash_flow.rb:890:12:890:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | -| hash_flow.rb:890:12:890:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:890:12:890:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :a] : | semmle.label | call to reverse_merge! [element :a] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :c] : | semmle.label | call to reverse_merge! [element :c] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :d] : | semmle.label | call to reverse_merge! [element :d] : | -| hash_flow.rb:890:12:890:38 | call to reverse_merge! [element :f] : | semmle.label | call to reverse_merge! [element :f] : | -| hash_flow.rb:890:33:890:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:890:33:890:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:891:10:891:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:891:11:891:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:891:11:891:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:889:12:889:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | +| hash_flow.rb:892:12:892:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:892:12:892:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] : | semmle.label | call to reverse_merge! [element :a] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] : | semmle.label | call to reverse_merge! [element :c] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] : | semmle.label | call to reverse_merge! [element :d] : | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] : | semmle.label | call to reverse_merge! [element :f] : | +| hash_flow.rb:892:33:892:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:892:33:892:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | | hash_flow.rb:893:10:893:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:893:11:893:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:893:11:893:14 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:893:11:893:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:894:10:894:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:894:11:894:14 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:894:11:894:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:895:10:895:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:895:11:895:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:895:11:895:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:896:10:896:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:896:11:896:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:896:11:896:14 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:896:11:896:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:898:10:898:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:898:11:898:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:898:11:898:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:898:10:898:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:898:11:898:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:898:11:898:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:900:10:900:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:900:11:900:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:900:11:900:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | | hash_flow.rb:900:11:900:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:901:10:901:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:901:11:901:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | -| hash_flow.rb:901:11:901:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:902:10:902:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:902:11:902:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:902:11:902:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:903:10:903:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:903:11:903:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:903:11:903:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | | hash_flow.rb:903:11:903:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:910:12:910:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:905:10:905:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:905:11:905:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:905:11:905:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:912:12:912:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:915:12:915:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:914:12:914:22 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:917:12:917:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | -| hash_flow.rb:920:12:920:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | -| hash_flow.rb:920:12:920:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:920:12:920:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :a] : | semmle.label | call to with_defaults! [element :a] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :c] : | semmle.label | call to with_defaults! [element :c] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :d] : | semmle.label | call to with_defaults! [element :d] : | -| hash_flow.rb:920:12:920:38 | call to with_defaults! [element :f] : | semmle.label | call to with_defaults! [element :f] : | -| hash_flow.rb:920:33:920:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:920:33:920:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:921:10:921:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:921:11:921:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:921:11:921:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:919:12:919:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | +| hash_flow.rb:922:12:922:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:922:12:922:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] : | semmle.label | call to with_defaults! [element :a] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] : | semmle.label | call to with_defaults! [element :c] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] : | semmle.label | call to with_defaults! [element :d] : | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] : | semmle.label | call to with_defaults! [element :f] : | +| hash_flow.rb:922:33:922:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:922:33:922:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | | hash_flow.rb:923:10:923:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:923:11:923:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:923:11:923:14 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:923:11:923:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:924:10:924:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:924:11:924:14 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:924:11:924:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:925:10:925:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:925:11:925:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:925:11:925:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:926:10:926:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:926:11:926:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:926:11:926:14 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:926:11:926:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:928:10:928:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:928:11:928:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:928:11:928:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:928:10:928:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:928:11:928:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:928:11:928:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:930:10:930:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:930:11:930:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:930:11:930:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | | hash_flow.rb:930:11:930:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:931:10:931:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:931:11:931:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | -| hash_flow.rb:931:11:931:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:932:10:932:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:932:11:932:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:932:11:932:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:933:10:933:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:933:11:933:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:933:11:933:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | | hash_flow.rb:933:11:933:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:940:12:940:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:935:10:935:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:935:11:935:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:935:11:935:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:942:12:942:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:945:12:945:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:944:12:944:22 | call to taint : | semmle.label | call to taint : | | hash_flow.rb:947:12:947:22 | call to taint : | semmle.label | call to taint : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | -| hash_flow.rb:950:12:950:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | -| hash_flow.rb:950:12:950:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:950:12:950:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :a] : | semmle.label | call to with_defaults! [element :a] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :c] : | semmle.label | call to with_defaults! [element :c] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :d] : | semmle.label | call to with_defaults! [element :d] : | -| hash_flow.rb:950:12:950:38 | call to with_defaults! [element :f] : | semmle.label | call to with_defaults! [element :f] : | -| hash_flow.rb:950:33:950:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | -| hash_flow.rb:950:33:950:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | -| hash_flow.rb:951:10:951:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:951:11:951:14 | hash [element :a] : | semmle.label | hash [element :a] : | -| hash_flow.rb:951:11:951:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:949:12:949:22 | call to taint : | semmle.label | call to taint : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] : | semmle.label | [post] hash1 [element :a] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] : | semmle.label | [post] hash1 [element :c] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] : | semmle.label | [post] hash1 [element :d] : | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] : | semmle.label | [post] hash1 [element :f] : | +| hash_flow.rb:952:12:952:16 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | +| hash_flow.rb:952:12:952:16 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] : | semmle.label | call to with_defaults! [element :a] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] : | semmle.label | call to with_defaults! [element :c] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] : | semmle.label | call to with_defaults! [element :d] : | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] : | semmle.label | call to with_defaults! [element :f] : | +| hash_flow.rb:952:33:952:37 | hash2 [element :d] : | semmle.label | hash2 [element :d] : | +| hash_flow.rb:952:33:952:37 | hash2 [element :f] : | semmle.label | hash2 [element :f] : | | hash_flow.rb:953:10:953:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:953:11:953:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:953:11:953:14 | hash [element :a] : | semmle.label | hash [element :a] : | | hash_flow.rb:953:11:953:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:954:10:954:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:954:11:954:14 | hash [element :d] : | semmle.label | hash [element :d] : | -| hash_flow.rb:954:11:954:18 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:955:10:955:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:955:11:955:14 | hash [element :c] : | semmle.label | hash [element :c] : | +| hash_flow.rb:955:11:955:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:956:10:956:19 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:956:11:956:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:956:11:956:14 | hash [element :d] : | semmle.label | hash [element :d] : | | hash_flow.rb:956:11:956:18 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:958:10:958:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:958:11:958:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | -| hash_flow.rb:958:11:958:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:958:10:958:19 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:958:11:958:14 | hash [element :f] : | semmle.label | hash [element :f] : | +| hash_flow.rb:958:11:958:18 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:960:10:960:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:960:11:960:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:960:11:960:15 | hash1 [element :a] : | semmle.label | hash1 [element :a] : | | hash_flow.rb:960:11:960:19 | ...[...] : | semmle.label | ...[...] : | -| hash_flow.rb:961:10:961:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:961:11:961:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | -| hash_flow.rb:961:11:961:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:962:10:962:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:962:11:962:15 | hash1 [element :c] : | semmle.label | hash1 [element :c] : | +| hash_flow.rb:962:11:962:19 | ...[...] : | semmle.label | ...[...] : | | hash_flow.rb:963:10:963:20 | ( ... ) | semmle.label | ( ... ) | -| hash_flow.rb:963:11:963:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:963:11:963:15 | hash1 [element :d] : | semmle.label | hash1 [element :d] : | | hash_flow.rb:963:11:963:19 | ...[...] : | semmle.label | ...[...] : | +| hash_flow.rb:965:10:965:20 | ( ... ) | semmle.label | ( ... ) | +| hash_flow.rb:965:11:965:15 | hash1 [element :f] : | semmle.label | hash1 [element :f] : | +| hash_flow.rb:965:11:965:19 | ...[...] : | semmle.label | ...[...] : | subpaths #select | hash_flow.rb:22:10:22:17 | ...[...] | hash_flow.rb:11:15:11:24 | call to taint : | hash_flow.rb:22:10:22:17 | ...[...] | $@ | hash_flow.rb:11:15:11:24 | call to taint : | call to taint : | @@ -1729,107 +1738,110 @@ subpaths | hash_flow.rb:625:10:625:17 | ( ... ) | hash_flow.rb:621:15:621:25 | call to taint : | hash_flow.rb:625:10:625:17 | ( ... ) | $@ | hash_flow.rb:621:15:621:25 | call to taint : | call to taint : | | hash_flow.rb:626:10:626:17 | ( ... ) | hash_flow.rb:619:15:619:25 | call to taint : | hash_flow.rb:626:10:626:17 | ( ... ) | $@ | hash_flow.rb:619:15:619:25 | call to taint : | call to taint : | | hash_flow.rb:626:10:626:17 | ( ... ) | hash_flow.rb:621:15:621:25 | call to taint : | hash_flow.rb:626:10:626:17 | ( ... ) | $@ | hash_flow.rb:621:15:621:25 | call to taint : | call to taint : | -| hash_flow.rb:638:10:638:20 | ( ... ) | hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:638:10:638:20 | ( ... ) | $@ | hash_flow.rb:633:15:633:25 | call to taint : | call to taint : | -| hash_flow.rb:638:10:638:20 | ( ... ) | hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:638:10:638:20 | ( ... ) | $@ | hash_flow.rb:635:15:635:25 | call to taint : | call to taint : | -| hash_flow.rb:639:10:639:20 | ( ... ) | hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:639:10:639:20 | ( ... ) | $@ | hash_flow.rb:633:15:633:25 | call to taint : | call to taint : | -| hash_flow.rb:639:10:639:20 | ( ... ) | hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:639:10:639:20 | ( ... ) | $@ | hash_flow.rb:635:15:635:25 | call to taint : | call to taint : | | hash_flow.rb:640:10:640:20 | ( ... ) | hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:640:10:640:20 | ( ... ) | $@ | hash_flow.rb:633:15:633:25 | call to taint : | call to taint : | | hash_flow.rb:640:10:640:20 | ( ... ) | hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:640:10:640:20 | ( ... ) | $@ | hash_flow.rb:635:15:635:25 | call to taint : | call to taint : | -| hash_flow.rb:652:14:652:18 | value | hash_flow.rb:647:15:647:25 | call to taint : | hash_flow.rb:652:14:652:18 | value | $@ | hash_flow.rb:647:15:647:25 | call to taint : | call to taint : | -| hash_flow.rb:652:14:652:18 | value | hash_flow.rb:649:15:649:25 | call to taint : | hash_flow.rb:652:14:652:18 | value | $@ | hash_flow.rb:649:15:649:25 | call to taint : | call to taint : | -| hash_flow.rb:655:10:655:19 | ( ... ) | hash_flow.rb:647:15:647:25 | call to taint : | hash_flow.rb:655:10:655:19 | ( ... ) | $@ | hash_flow.rb:647:15:647:25 | call to taint : | call to taint : | -| hash_flow.rb:656:10:656:16 | ( ... ) | hash_flow.rb:653:9:653:19 | call to taint : | hash_flow.rb:656:10:656:16 | ( ... ) | $@ | hash_flow.rb:653:9:653:19 | call to taint : | call to taint : | -| hash_flow.rb:668:14:668:18 | value | hash_flow.rb:663:15:663:25 | call to taint : | hash_flow.rb:668:14:668:18 | value | $@ | hash_flow.rb:663:15:663:25 | call to taint : | call to taint : | -| hash_flow.rb:668:14:668:18 | value | hash_flow.rb:665:15:665:25 | call to taint : | hash_flow.rb:668:14:668:18 | value | $@ | hash_flow.rb:665:15:665:25 | call to taint : | call to taint : | -| hash_flow.rb:671:10:671:19 | ( ... ) | hash_flow.rb:669:9:669:19 | call to taint : | hash_flow.rb:671:10:671:19 | ( ... ) | $@ | hash_flow.rb:669:9:669:19 | call to taint : | call to taint : | -| hash_flow.rb:689:14:689:22 | old_value | hash_flow.rb:678:15:678:25 | call to taint : | hash_flow.rb:689:14:689:22 | old_value | $@ | hash_flow.rb:678:15:678:25 | call to taint : | call to taint : | -| hash_flow.rb:689:14:689:22 | old_value | hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:689:14:689:22 | old_value | $@ | hash_flow.rb:680:15:680:25 | call to taint : | call to taint : | -| hash_flow.rb:689:14:689:22 | old_value | hash_flow.rb:683:15:683:25 | call to taint : | hash_flow.rb:689:14:689:22 | old_value | $@ | hash_flow.rb:683:15:683:25 | call to taint : | call to taint : | -| hash_flow.rb:689:14:689:22 | old_value | hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:689:14:689:22 | old_value | $@ | hash_flow.rb:685:15:685:25 | call to taint : | call to taint : | -| hash_flow.rb:690:14:690:22 | new_value | hash_flow.rb:678:15:678:25 | call to taint : | hash_flow.rb:690:14:690:22 | new_value | $@ | hash_flow.rb:678:15:678:25 | call to taint : | call to taint : | -| hash_flow.rb:690:14:690:22 | new_value | hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:690:14:690:22 | new_value | $@ | hash_flow.rb:680:15:680:25 | call to taint : | call to taint : | -| hash_flow.rb:690:14:690:22 | new_value | hash_flow.rb:683:15:683:25 | call to taint : | hash_flow.rb:690:14:690:22 | new_value | $@ | hash_flow.rb:683:15:683:25 | call to taint : | call to taint : | -| hash_flow.rb:690:14:690:22 | new_value | hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:690:14:690:22 | new_value | $@ | hash_flow.rb:685:15:685:25 | call to taint : | call to taint : | -| hash_flow.rb:692:10:692:19 | ( ... ) | hash_flow.rb:678:15:678:25 | call to taint : | hash_flow.rb:692:10:692:19 | ( ... ) | $@ | hash_flow.rb:678:15:678:25 | call to taint : | call to taint : | +| hash_flow.rb:640:10:640:20 | ( ... ) | hash_flow.rb:637:15:637:25 | call to taint : | hash_flow.rb:640:10:640:20 | ( ... ) | $@ | hash_flow.rb:637:15:637:25 | call to taint : | call to taint : | +| hash_flow.rb:641:10:641:20 | ( ... ) | hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:641:10:641:20 | ( ... ) | $@ | hash_flow.rb:633:15:633:25 | call to taint : | call to taint : | +| hash_flow.rb:641:10:641:20 | ( ... ) | hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:641:10:641:20 | ( ... ) | $@ | hash_flow.rb:635:15:635:25 | call to taint : | call to taint : | +| hash_flow.rb:641:10:641:20 | ( ... ) | hash_flow.rb:637:15:637:25 | call to taint : | hash_flow.rb:641:10:641:20 | ( ... ) | $@ | hash_flow.rb:637:15:637:25 | call to taint : | call to taint : | +| hash_flow.rb:642:10:642:20 | ( ... ) | hash_flow.rb:633:15:633:25 | call to taint : | hash_flow.rb:642:10:642:20 | ( ... ) | $@ | hash_flow.rb:633:15:633:25 | call to taint : | call to taint : | +| hash_flow.rb:642:10:642:20 | ( ... ) | hash_flow.rb:635:15:635:25 | call to taint : | hash_flow.rb:642:10:642:20 | ( ... ) | $@ | hash_flow.rb:635:15:635:25 | call to taint : | call to taint : | +| hash_flow.rb:642:10:642:20 | ( ... ) | hash_flow.rb:637:15:637:25 | call to taint : | hash_flow.rb:642:10:642:20 | ( ... ) | $@ | hash_flow.rb:637:15:637:25 | call to taint : | call to taint : | +| hash_flow.rb:654:14:654:18 | value | hash_flow.rb:649:15:649:25 | call to taint : | hash_flow.rb:654:14:654:18 | value | $@ | hash_flow.rb:649:15:649:25 | call to taint : | call to taint : | +| hash_flow.rb:654:14:654:18 | value | hash_flow.rb:651:15:651:25 | call to taint : | hash_flow.rb:654:14:654:18 | value | $@ | hash_flow.rb:651:15:651:25 | call to taint : | call to taint : | +| hash_flow.rb:657:10:657:19 | ( ... ) | hash_flow.rb:649:15:649:25 | call to taint : | hash_flow.rb:657:10:657:19 | ( ... ) | $@ | hash_flow.rb:649:15:649:25 | call to taint : | call to taint : | +| hash_flow.rb:658:10:658:16 | ( ... ) | hash_flow.rb:655:9:655:19 | call to taint : | hash_flow.rb:658:10:658:16 | ( ... ) | $@ | hash_flow.rb:655:9:655:19 | call to taint : | call to taint : | +| hash_flow.rb:670:14:670:18 | value | hash_flow.rb:665:15:665:25 | call to taint : | hash_flow.rb:670:14:670:18 | value | $@ | hash_flow.rb:665:15:665:25 | call to taint : | call to taint : | +| hash_flow.rb:670:14:670:18 | value | hash_flow.rb:667:15:667:25 | call to taint : | hash_flow.rb:670:14:670:18 | value | $@ | hash_flow.rb:667:15:667:25 | call to taint : | call to taint : | +| hash_flow.rb:673:10:673:19 | ( ... ) | hash_flow.rb:671:9:671:19 | call to taint : | hash_flow.rb:673:10:673:19 | ( ... ) | $@ | hash_flow.rb:671:9:671:19 | call to taint : | call to taint : | +| hash_flow.rb:691:14:691:22 | old_value | hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:691:14:691:22 | old_value | $@ | hash_flow.rb:680:15:680:25 | call to taint : | call to taint : | +| hash_flow.rb:691:14:691:22 | old_value | hash_flow.rb:682:15:682:25 | call to taint : | hash_flow.rb:691:14:691:22 | old_value | $@ | hash_flow.rb:682:15:682:25 | call to taint : | call to taint : | +| hash_flow.rb:691:14:691:22 | old_value | hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:691:14:691:22 | old_value | $@ | hash_flow.rb:685:15:685:25 | call to taint : | call to taint : | +| hash_flow.rb:691:14:691:22 | old_value | hash_flow.rb:687:15:687:25 | call to taint : | hash_flow.rb:691:14:691:22 | old_value | $@ | hash_flow.rb:687:15:687:25 | call to taint : | call to taint : | +| hash_flow.rb:692:14:692:22 | new_value | hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:692:14:692:22 | new_value | $@ | hash_flow.rb:680:15:680:25 | call to taint : | call to taint : | +| hash_flow.rb:692:14:692:22 | new_value | hash_flow.rb:682:15:682:25 | call to taint : | hash_flow.rb:692:14:692:22 | new_value | $@ | hash_flow.rb:682:15:682:25 | call to taint : | call to taint : | +| hash_flow.rb:692:14:692:22 | new_value | hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:692:14:692:22 | new_value | $@ | hash_flow.rb:685:15:685:25 | call to taint : | call to taint : | +| hash_flow.rb:692:14:692:22 | new_value | hash_flow.rb:687:15:687:25 | call to taint : | hash_flow.rb:692:14:692:22 | new_value | $@ | hash_flow.rb:687:15:687:25 | call to taint : | call to taint : | | hash_flow.rb:694:10:694:19 | ( ... ) | hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:694:10:694:19 | ( ... ) | $@ | hash_flow.rb:680:15:680:25 | call to taint : | call to taint : | -| hash_flow.rb:695:10:695:19 | ( ... ) | hash_flow.rb:683:15:683:25 | call to taint : | hash_flow.rb:695:10:695:19 | ( ... ) | $@ | hash_flow.rb:683:15:683:25 | call to taint : | call to taint : | +| hash_flow.rb:696:10:696:19 | ( ... ) | hash_flow.rb:682:15:682:25 | call to taint : | hash_flow.rb:696:10:696:19 | ( ... ) | $@ | hash_flow.rb:682:15:682:25 | call to taint : | call to taint : | | hash_flow.rb:697:10:697:19 | ( ... ) | hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:697:10:697:19 | ( ... ) | $@ | hash_flow.rb:685:15:685:25 | call to taint : | call to taint : | -| hash_flow.rb:699:10:699:20 | ( ... ) | hash_flow.rb:678:15:678:25 | call to taint : | hash_flow.rb:699:10:699:20 | ( ... ) | $@ | hash_flow.rb:678:15:678:25 | call to taint : | call to taint : | +| hash_flow.rb:699:10:699:19 | ( ... ) | hash_flow.rb:687:15:687:25 | call to taint : | hash_flow.rb:699:10:699:19 | ( ... ) | $@ | hash_flow.rb:687:15:687:25 | call to taint : | call to taint : | | hash_flow.rb:701:10:701:20 | ( ... ) | hash_flow.rb:680:15:680:25 | call to taint : | hash_flow.rb:701:10:701:20 | ( ... ) | $@ | hash_flow.rb:680:15:680:25 | call to taint : | call to taint : | -| hash_flow.rb:702:10:702:20 | ( ... ) | hash_flow.rb:683:15:683:25 | call to taint : | hash_flow.rb:702:10:702:20 | ( ... ) | $@ | hash_flow.rb:683:15:683:25 | call to taint : | call to taint : | +| hash_flow.rb:703:10:703:20 | ( ... ) | hash_flow.rb:682:15:682:25 | call to taint : | hash_flow.rb:703:10:703:20 | ( ... ) | $@ | hash_flow.rb:682:15:682:25 | call to taint : | call to taint : | | hash_flow.rb:704:10:704:20 | ( ... ) | hash_flow.rb:685:15:685:25 | call to taint : | hash_flow.rb:704:10:704:20 | ( ... ) | $@ | hash_flow.rb:685:15:685:25 | call to taint : | call to taint : | -| hash_flow.rb:716:10:716:15 | ( ... ) | hash_flow.rb:711:15:711:25 | call to taint : | hash_flow.rb:716:10:716:15 | ( ... ) | $@ | hash_flow.rb:711:15:711:25 | call to taint : | call to taint : | -| hash_flow.rb:716:10:716:15 | ( ... ) | hash_flow.rb:713:15:713:25 | call to taint : | hash_flow.rb:716:10:716:15 | ( ... ) | $@ | hash_flow.rb:713:15:713:25 | call to taint : | call to taint : | -| hash_flow.rb:728:10:728:13 | ...[...] | hash_flow.rb:723:15:723:25 | call to taint : | hash_flow.rb:728:10:728:13 | ...[...] | $@ | hash_flow.rb:723:15:723:25 | call to taint : | call to taint : | -| hash_flow.rb:730:10:730:13 | ...[...] | hash_flow.rb:723:15:723:25 | call to taint : | hash_flow.rb:730:10:730:13 | ...[...] | $@ | hash_flow.rb:723:15:723:25 | call to taint : | call to taint : | +| hash_flow.rb:706:10:706:20 | ( ... ) | hash_flow.rb:687:15:687:25 | call to taint : | hash_flow.rb:706:10:706:20 | ( ... ) | $@ | hash_flow.rb:687:15:687:25 | call to taint : | call to taint : | +| hash_flow.rb:718:10:718:15 | ( ... ) | hash_flow.rb:713:15:713:25 | call to taint : | hash_flow.rb:718:10:718:15 | ( ... ) | $@ | hash_flow.rb:713:15:713:25 | call to taint : | call to taint : | +| hash_flow.rb:718:10:718:15 | ( ... ) | hash_flow.rb:715:15:715:25 | call to taint : | hash_flow.rb:718:10:718:15 | ( ... ) | $@ | hash_flow.rb:715:15:715:25 | call to taint : | call to taint : | | hash_flow.rb:730:10:730:13 | ...[...] | hash_flow.rb:725:15:725:25 | call to taint : | hash_flow.rb:730:10:730:13 | ...[...] | $@ | hash_flow.rb:725:15:725:25 | call to taint : | call to taint : | -| hash_flow.rb:747:10:747:17 | ...[...] | hash_flow.rb:737:15:737:25 | call to taint : | hash_flow.rb:747:10:747:17 | ...[...] | $@ | hash_flow.rb:737:15:737:25 | call to taint : | call to taint : | +| hash_flow.rb:732:10:732:13 | ...[...] | hash_flow.rb:725:15:725:25 | call to taint : | hash_flow.rb:732:10:732:13 | ...[...] | $@ | hash_flow.rb:725:15:725:25 | call to taint : | call to taint : | +| hash_flow.rb:732:10:732:13 | ...[...] | hash_flow.rb:727:15:727:25 | call to taint : | hash_flow.rb:732:10:732:13 | ...[...] | $@ | hash_flow.rb:727:15:727:25 | call to taint : | call to taint : | | hash_flow.rb:749:10:749:17 | ...[...] | hash_flow.rb:739:15:739:25 | call to taint : | hash_flow.rb:749:10:749:17 | ...[...] | $@ | hash_flow.rb:739:15:739:25 | call to taint : | call to taint : | -| hash_flow.rb:750:10:750:17 | ...[...] | hash_flow.rb:742:15:742:25 | call to taint : | hash_flow.rb:750:10:750:17 | ...[...] | $@ | hash_flow.rb:742:15:742:25 | call to taint : | call to taint : | +| hash_flow.rb:751:10:751:17 | ...[...] | hash_flow.rb:741:15:741:25 | call to taint : | hash_flow.rb:751:10:751:17 | ...[...] | $@ | hash_flow.rb:741:15:741:25 | call to taint : | call to taint : | | hash_flow.rb:752:10:752:17 | ...[...] | hash_flow.rb:744:15:744:25 | call to taint : | hash_flow.rb:752:10:752:17 | ...[...] | $@ | hash_flow.rb:744:15:744:25 | call to taint : | call to taint : | -| hash_flow.rb:753:10:753:17 | ...[...] | hash_flow.rb:746:29:746:39 | call to taint : | hash_flow.rb:753:10:753:17 | ...[...] | $@ | hash_flow.rb:746:29:746:39 | call to taint : | call to taint : | -| hash_flow.rb:767:10:767:17 | ...[...] | hash_flow.rb:761:15:761:25 | call to taint : | hash_flow.rb:767:10:767:17 | ...[...] | $@ | hash_flow.rb:761:15:761:25 | call to taint : | call to taint : | +| hash_flow.rb:754:10:754:17 | ...[...] | hash_flow.rb:746:15:746:25 | call to taint : | hash_flow.rb:754:10:754:17 | ...[...] | $@ | hash_flow.rb:746:15:746:25 | call to taint : | call to taint : | +| hash_flow.rb:755:10:755:17 | ...[...] | hash_flow.rb:748:29:748:39 | call to taint : | hash_flow.rb:755:10:755:17 | ...[...] | $@ | hash_flow.rb:748:29:748:39 | call to taint : | call to taint : | | hash_flow.rb:769:10:769:17 | ...[...] | hash_flow.rb:763:15:763:25 | call to taint : | hash_flow.rb:769:10:769:17 | ...[...] | $@ | hash_flow.rb:763:15:763:25 | call to taint : | call to taint : | -| hash_flow.rb:770:10:770:17 | ...[...] | hash_flow.rb:764:15:764:25 | call to taint : | hash_flow.rb:770:10:770:17 | ...[...] | $@ | hash_flow.rb:764:15:764:25 | call to taint : | call to taint : | -| hash_flow.rb:776:10:776:14 | ...[...] | hash_flow.rb:763:15:763:25 | call to taint : | hash_flow.rb:776:10:776:14 | ...[...] | $@ | hash_flow.rb:763:15:763:25 | call to taint : | call to taint : | -| hash_flow.rb:781:10:781:17 | ...[...] | hash_flow.rb:763:15:763:25 | call to taint : | hash_flow.rb:781:10:781:17 | ...[...] | $@ | hash_flow.rb:763:15:763:25 | call to taint : | call to taint : | -| hash_flow.rb:800:14:800:22 | old_value | hash_flow.rb:789:15:789:25 | call to taint : | hash_flow.rb:800:14:800:22 | old_value | $@ | hash_flow.rb:789:15:789:25 | call to taint : | call to taint : | -| hash_flow.rb:800:14:800:22 | old_value | hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:800:14:800:22 | old_value | $@ | hash_flow.rb:791:15:791:25 | call to taint : | call to taint : | -| hash_flow.rb:800:14:800:22 | old_value | hash_flow.rb:794:15:794:25 | call to taint : | hash_flow.rb:800:14:800:22 | old_value | $@ | hash_flow.rb:794:15:794:25 | call to taint : | call to taint : | -| hash_flow.rb:800:14:800:22 | old_value | hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:800:14:800:22 | old_value | $@ | hash_flow.rb:796:15:796:25 | call to taint : | call to taint : | -| hash_flow.rb:801:14:801:22 | new_value | hash_flow.rb:789:15:789:25 | call to taint : | hash_flow.rb:801:14:801:22 | new_value | $@ | hash_flow.rb:789:15:789:25 | call to taint : | call to taint : | -| hash_flow.rb:801:14:801:22 | new_value | hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:801:14:801:22 | new_value | $@ | hash_flow.rb:791:15:791:25 | call to taint : | call to taint : | -| hash_flow.rb:801:14:801:22 | new_value | hash_flow.rb:794:15:794:25 | call to taint : | hash_flow.rb:801:14:801:22 | new_value | $@ | hash_flow.rb:794:15:794:25 | call to taint : | call to taint : | -| hash_flow.rb:801:14:801:22 | new_value | hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:801:14:801:22 | new_value | $@ | hash_flow.rb:796:15:796:25 | call to taint : | call to taint : | -| hash_flow.rb:803:10:803:19 | ( ... ) | hash_flow.rb:789:15:789:25 | call to taint : | hash_flow.rb:803:10:803:19 | ( ... ) | $@ | hash_flow.rb:789:15:789:25 | call to taint : | call to taint : | +| hash_flow.rb:771:10:771:17 | ...[...] | hash_flow.rb:765:15:765:25 | call to taint : | hash_flow.rb:771:10:771:17 | ...[...] | $@ | hash_flow.rb:765:15:765:25 | call to taint : | call to taint : | +| hash_flow.rb:772:10:772:17 | ...[...] | hash_flow.rb:766:15:766:25 | call to taint : | hash_flow.rb:772:10:772:17 | ...[...] | $@ | hash_flow.rb:766:15:766:25 | call to taint : | call to taint : | +| hash_flow.rb:778:10:778:14 | ...[...] | hash_flow.rb:765:15:765:25 | call to taint : | hash_flow.rb:778:10:778:14 | ...[...] | $@ | hash_flow.rb:765:15:765:25 | call to taint : | call to taint : | +| hash_flow.rb:783:10:783:17 | ...[...] | hash_flow.rb:765:15:765:25 | call to taint : | hash_flow.rb:783:10:783:17 | ...[...] | $@ | hash_flow.rb:765:15:765:25 | call to taint : | call to taint : | +| hash_flow.rb:802:14:802:22 | old_value | hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:802:14:802:22 | old_value | $@ | hash_flow.rb:791:15:791:25 | call to taint : | call to taint : | +| hash_flow.rb:802:14:802:22 | old_value | hash_flow.rb:793:15:793:25 | call to taint : | hash_flow.rb:802:14:802:22 | old_value | $@ | hash_flow.rb:793:15:793:25 | call to taint : | call to taint : | +| hash_flow.rb:802:14:802:22 | old_value | hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:802:14:802:22 | old_value | $@ | hash_flow.rb:796:15:796:25 | call to taint : | call to taint : | +| hash_flow.rb:802:14:802:22 | old_value | hash_flow.rb:798:15:798:25 | call to taint : | hash_flow.rb:802:14:802:22 | old_value | $@ | hash_flow.rb:798:15:798:25 | call to taint : | call to taint : | +| hash_flow.rb:803:14:803:22 | new_value | hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:803:14:803:22 | new_value | $@ | hash_flow.rb:791:15:791:25 | call to taint : | call to taint : | +| hash_flow.rb:803:14:803:22 | new_value | hash_flow.rb:793:15:793:25 | call to taint : | hash_flow.rb:803:14:803:22 | new_value | $@ | hash_flow.rb:793:15:793:25 | call to taint : | call to taint : | +| hash_flow.rb:803:14:803:22 | new_value | hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:803:14:803:22 | new_value | $@ | hash_flow.rb:796:15:796:25 | call to taint : | call to taint : | +| hash_flow.rb:803:14:803:22 | new_value | hash_flow.rb:798:15:798:25 | call to taint : | hash_flow.rb:803:14:803:22 | new_value | $@ | hash_flow.rb:798:15:798:25 | call to taint : | call to taint : | | hash_flow.rb:805:10:805:19 | ( ... ) | hash_flow.rb:791:15:791:25 | call to taint : | hash_flow.rb:805:10:805:19 | ( ... ) | $@ | hash_flow.rb:791:15:791:25 | call to taint : | call to taint : | -| hash_flow.rb:806:10:806:19 | ( ... ) | hash_flow.rb:794:15:794:25 | call to taint : | hash_flow.rb:806:10:806:19 | ( ... ) | $@ | hash_flow.rb:794:15:794:25 | call to taint : | call to taint : | +| hash_flow.rb:807:10:807:19 | ( ... ) | hash_flow.rb:793:15:793:25 | call to taint : | hash_flow.rb:807:10:807:19 | ( ... ) | $@ | hash_flow.rb:793:15:793:25 | call to taint : | call to taint : | | hash_flow.rb:808:10:808:19 | ( ... ) | hash_flow.rb:796:15:796:25 | call to taint : | hash_flow.rb:808:10:808:19 | ( ... ) | $@ | hash_flow.rb:796:15:796:25 | call to taint : | call to taint : | -| hash_flow.rb:826:14:826:22 | old_value | hash_flow.rb:815:15:815:25 | call to taint : | hash_flow.rb:826:14:826:22 | old_value | $@ | hash_flow.rb:815:15:815:25 | call to taint : | call to taint : | -| hash_flow.rb:826:14:826:22 | old_value | hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:826:14:826:22 | old_value | $@ | hash_flow.rb:817:15:817:25 | call to taint : | call to taint : | -| hash_flow.rb:826:14:826:22 | old_value | hash_flow.rb:820:15:820:25 | call to taint : | hash_flow.rb:826:14:826:22 | old_value | $@ | hash_flow.rb:820:15:820:25 | call to taint : | call to taint : | -| hash_flow.rb:826:14:826:22 | old_value | hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:826:14:826:22 | old_value | $@ | hash_flow.rb:822:15:822:25 | call to taint : | call to taint : | -| hash_flow.rb:827:14:827:22 | new_value | hash_flow.rb:815:15:815:25 | call to taint : | hash_flow.rb:827:14:827:22 | new_value | $@ | hash_flow.rb:815:15:815:25 | call to taint : | call to taint : | -| hash_flow.rb:827:14:827:22 | new_value | hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:827:14:827:22 | new_value | $@ | hash_flow.rb:817:15:817:25 | call to taint : | call to taint : | -| hash_flow.rb:827:14:827:22 | new_value | hash_flow.rb:820:15:820:25 | call to taint : | hash_flow.rb:827:14:827:22 | new_value | $@ | hash_flow.rb:820:15:820:25 | call to taint : | call to taint : | -| hash_flow.rb:827:14:827:22 | new_value | hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:827:14:827:22 | new_value | $@ | hash_flow.rb:822:15:822:25 | call to taint : | call to taint : | -| hash_flow.rb:829:10:829:19 | ( ... ) | hash_flow.rb:815:15:815:25 | call to taint : | hash_flow.rb:829:10:829:19 | ( ... ) | $@ | hash_flow.rb:815:15:815:25 | call to taint : | call to taint : | +| hash_flow.rb:810:10:810:19 | ( ... ) | hash_flow.rb:798:15:798:25 | call to taint : | hash_flow.rb:810:10:810:19 | ( ... ) | $@ | hash_flow.rb:798:15:798:25 | call to taint : | call to taint : | +| hash_flow.rb:828:14:828:22 | old_value | hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:828:14:828:22 | old_value | $@ | hash_flow.rb:817:15:817:25 | call to taint : | call to taint : | +| hash_flow.rb:828:14:828:22 | old_value | hash_flow.rb:819:15:819:25 | call to taint : | hash_flow.rb:828:14:828:22 | old_value | $@ | hash_flow.rb:819:15:819:25 | call to taint : | call to taint : | +| hash_flow.rb:828:14:828:22 | old_value | hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:828:14:828:22 | old_value | $@ | hash_flow.rb:822:15:822:25 | call to taint : | call to taint : | +| hash_flow.rb:828:14:828:22 | old_value | hash_flow.rb:824:15:824:25 | call to taint : | hash_flow.rb:828:14:828:22 | old_value | $@ | hash_flow.rb:824:15:824:25 | call to taint : | call to taint : | +| hash_flow.rb:829:14:829:22 | new_value | hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:829:14:829:22 | new_value | $@ | hash_flow.rb:817:15:817:25 | call to taint : | call to taint : | +| hash_flow.rb:829:14:829:22 | new_value | hash_flow.rb:819:15:819:25 | call to taint : | hash_flow.rb:829:14:829:22 | new_value | $@ | hash_flow.rb:819:15:819:25 | call to taint : | call to taint : | +| hash_flow.rb:829:14:829:22 | new_value | hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:829:14:829:22 | new_value | $@ | hash_flow.rb:822:15:822:25 | call to taint : | call to taint : | +| hash_flow.rb:829:14:829:22 | new_value | hash_flow.rb:824:15:824:25 | call to taint : | hash_flow.rb:829:14:829:22 | new_value | $@ | hash_flow.rb:824:15:824:25 | call to taint : | call to taint : | | hash_flow.rb:831:10:831:19 | ( ... ) | hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:831:10:831:19 | ( ... ) | $@ | hash_flow.rb:817:15:817:25 | call to taint : | call to taint : | -| hash_flow.rb:832:10:832:19 | ( ... ) | hash_flow.rb:820:15:820:25 | call to taint : | hash_flow.rb:832:10:832:19 | ( ... ) | $@ | hash_flow.rb:820:15:820:25 | call to taint : | call to taint : | +| hash_flow.rb:833:10:833:19 | ( ... ) | hash_flow.rb:819:15:819:25 | call to taint : | hash_flow.rb:833:10:833:19 | ( ... ) | $@ | hash_flow.rb:819:15:819:25 | call to taint : | call to taint : | | hash_flow.rb:834:10:834:19 | ( ... ) | hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:834:10:834:19 | ( ... ) | $@ | hash_flow.rb:822:15:822:25 | call to taint : | call to taint : | -| hash_flow.rb:836:10:836:20 | ( ... ) | hash_flow.rb:815:15:815:25 | call to taint : | hash_flow.rb:836:10:836:20 | ( ... ) | $@ | hash_flow.rb:815:15:815:25 | call to taint : | call to taint : | +| hash_flow.rb:836:10:836:19 | ( ... ) | hash_flow.rb:824:15:824:25 | call to taint : | hash_flow.rb:836:10:836:19 | ( ... ) | $@ | hash_flow.rb:824:15:824:25 | call to taint : | call to taint : | | hash_flow.rb:838:10:838:20 | ( ... ) | hash_flow.rb:817:15:817:25 | call to taint : | hash_flow.rb:838:10:838:20 | ( ... ) | $@ | hash_flow.rb:817:15:817:25 | call to taint : | call to taint : | -| hash_flow.rb:839:10:839:20 | ( ... ) | hash_flow.rb:820:15:820:25 | call to taint : | hash_flow.rb:839:10:839:20 | ( ... ) | $@ | hash_flow.rb:820:15:820:25 | call to taint : | call to taint : | +| hash_flow.rb:840:10:840:20 | ( ... ) | hash_flow.rb:819:15:819:25 | call to taint : | hash_flow.rb:840:10:840:20 | ( ... ) | $@ | hash_flow.rb:819:15:819:25 | call to taint : | call to taint : | | hash_flow.rb:841:10:841:20 | ( ... ) | hash_flow.rb:822:15:822:25 | call to taint : | hash_flow.rb:841:10:841:20 | ( ... ) | $@ | hash_flow.rb:822:15:822:25 | call to taint : | call to taint : | -| hash_flow.rb:859:10:859:20 | ( ... ) | hash_flow.rb:848:12:848:22 | call to taint : | hash_flow.rb:859:10:859:20 | ( ... ) | $@ | hash_flow.rb:848:12:848:22 | call to taint : | call to taint : | +| hash_flow.rb:843:10:843:20 | ( ... ) | hash_flow.rb:824:15:824:25 | call to taint : | hash_flow.rb:843:10:843:20 | ( ... ) | $@ | hash_flow.rb:824:15:824:25 | call to taint : | call to taint : | | hash_flow.rb:861:10:861:20 | ( ... ) | hash_flow.rb:850:12:850:22 | call to taint : | hash_flow.rb:861:10:861:20 | ( ... ) | $@ | hash_flow.rb:850:12:850:22 | call to taint : | call to taint : | -| hash_flow.rb:862:10:862:20 | ( ... ) | hash_flow.rb:853:12:853:22 | call to taint : | hash_flow.rb:862:10:862:20 | ( ... ) | $@ | hash_flow.rb:853:12:853:22 | call to taint : | call to taint : | +| hash_flow.rb:863:10:863:20 | ( ... ) | hash_flow.rb:852:12:852:22 | call to taint : | hash_flow.rb:863:10:863:20 | ( ... ) | $@ | hash_flow.rb:852:12:852:22 | call to taint : | call to taint : | | hash_flow.rb:864:10:864:20 | ( ... ) | hash_flow.rb:855:12:855:22 | call to taint : | hash_flow.rb:864:10:864:20 | ( ... ) | $@ | hash_flow.rb:855:12:855:22 | call to taint : | call to taint : | -| hash_flow.rb:868:10:868:20 | ( ... ) | hash_flow.rb:848:12:848:22 | call to taint : | hash_flow.rb:868:10:868:20 | ( ... ) | $@ | hash_flow.rb:848:12:848:22 | call to taint : | call to taint : | +| hash_flow.rb:866:10:866:20 | ( ... ) | hash_flow.rb:857:12:857:22 | call to taint : | hash_flow.rb:866:10:866:20 | ( ... ) | $@ | hash_flow.rb:857:12:857:22 | call to taint : | call to taint : | | hash_flow.rb:870:10:870:20 | ( ... ) | hash_flow.rb:850:12:850:22 | call to taint : | hash_flow.rb:870:10:870:20 | ( ... ) | $@ | hash_flow.rb:850:12:850:22 | call to taint : | call to taint : | -| hash_flow.rb:871:10:871:20 | ( ... ) | hash_flow.rb:853:12:853:22 | call to taint : | hash_flow.rb:871:10:871:20 | ( ... ) | $@ | hash_flow.rb:853:12:853:22 | call to taint : | call to taint : | +| hash_flow.rb:872:10:872:20 | ( ... ) | hash_flow.rb:852:12:852:22 | call to taint : | hash_flow.rb:872:10:872:20 | ( ... ) | $@ | hash_flow.rb:852:12:852:22 | call to taint : | call to taint : | | hash_flow.rb:873:10:873:20 | ( ... ) | hash_flow.rb:855:12:855:22 | call to taint : | hash_flow.rb:873:10:873:20 | ( ... ) | $@ | hash_flow.rb:855:12:855:22 | call to taint : | call to taint : | -| hash_flow.rb:891:10:891:19 | ( ... ) | hash_flow.rb:880:12:880:22 | call to taint : | hash_flow.rb:891:10:891:19 | ( ... ) | $@ | hash_flow.rb:880:12:880:22 | call to taint : | call to taint : | +| hash_flow.rb:875:10:875:20 | ( ... ) | hash_flow.rb:857:12:857:22 | call to taint : | hash_flow.rb:875:10:875:20 | ( ... ) | $@ | hash_flow.rb:857:12:857:22 | call to taint : | call to taint : | | hash_flow.rb:893:10:893:19 | ( ... ) | hash_flow.rb:882:12:882:22 | call to taint : | hash_flow.rb:893:10:893:19 | ( ... ) | $@ | hash_flow.rb:882:12:882:22 | call to taint : | call to taint : | -| hash_flow.rb:894:10:894:19 | ( ... ) | hash_flow.rb:885:12:885:22 | call to taint : | hash_flow.rb:894:10:894:19 | ( ... ) | $@ | hash_flow.rb:885:12:885:22 | call to taint : | call to taint : | +| hash_flow.rb:895:10:895:19 | ( ... ) | hash_flow.rb:884:12:884:22 | call to taint : | hash_flow.rb:895:10:895:19 | ( ... ) | $@ | hash_flow.rb:884:12:884:22 | call to taint : | call to taint : | | hash_flow.rb:896:10:896:19 | ( ... ) | hash_flow.rb:887:12:887:22 | call to taint : | hash_flow.rb:896:10:896:19 | ( ... ) | $@ | hash_flow.rb:887:12:887:22 | call to taint : | call to taint : | -| hash_flow.rb:898:10:898:20 | ( ... ) | hash_flow.rb:880:12:880:22 | call to taint : | hash_flow.rb:898:10:898:20 | ( ... ) | $@ | hash_flow.rb:880:12:880:22 | call to taint : | call to taint : | +| hash_flow.rb:898:10:898:19 | ( ... ) | hash_flow.rb:889:12:889:22 | call to taint : | hash_flow.rb:898:10:898:19 | ( ... ) | $@ | hash_flow.rb:889:12:889:22 | call to taint : | call to taint : | | hash_flow.rb:900:10:900:20 | ( ... ) | hash_flow.rb:882:12:882:22 | call to taint : | hash_flow.rb:900:10:900:20 | ( ... ) | $@ | hash_flow.rb:882:12:882:22 | call to taint : | call to taint : | -| hash_flow.rb:901:10:901:20 | ( ... ) | hash_flow.rb:885:12:885:22 | call to taint : | hash_flow.rb:901:10:901:20 | ( ... ) | $@ | hash_flow.rb:885:12:885:22 | call to taint : | call to taint : | +| hash_flow.rb:902:10:902:20 | ( ... ) | hash_flow.rb:884:12:884:22 | call to taint : | hash_flow.rb:902:10:902:20 | ( ... ) | $@ | hash_flow.rb:884:12:884:22 | call to taint : | call to taint : | | hash_flow.rb:903:10:903:20 | ( ... ) | hash_flow.rb:887:12:887:22 | call to taint : | hash_flow.rb:903:10:903:20 | ( ... ) | $@ | hash_flow.rb:887:12:887:22 | call to taint : | call to taint : | -| hash_flow.rb:921:10:921:19 | ( ... ) | hash_flow.rb:910:12:910:22 | call to taint : | hash_flow.rb:921:10:921:19 | ( ... ) | $@ | hash_flow.rb:910:12:910:22 | call to taint : | call to taint : | +| hash_flow.rb:905:10:905:20 | ( ... ) | hash_flow.rb:889:12:889:22 | call to taint : | hash_flow.rb:905:10:905:20 | ( ... ) | $@ | hash_flow.rb:889:12:889:22 | call to taint : | call to taint : | | hash_flow.rb:923:10:923:19 | ( ... ) | hash_flow.rb:912:12:912:22 | call to taint : | hash_flow.rb:923:10:923:19 | ( ... ) | $@ | hash_flow.rb:912:12:912:22 | call to taint : | call to taint : | -| hash_flow.rb:924:10:924:19 | ( ... ) | hash_flow.rb:915:12:915:22 | call to taint : | hash_flow.rb:924:10:924:19 | ( ... ) | $@ | hash_flow.rb:915:12:915:22 | call to taint : | call to taint : | +| hash_flow.rb:925:10:925:19 | ( ... ) | hash_flow.rb:914:12:914:22 | call to taint : | hash_flow.rb:925:10:925:19 | ( ... ) | $@ | hash_flow.rb:914:12:914:22 | call to taint : | call to taint : | | hash_flow.rb:926:10:926:19 | ( ... ) | hash_flow.rb:917:12:917:22 | call to taint : | hash_flow.rb:926:10:926:19 | ( ... ) | $@ | hash_flow.rb:917:12:917:22 | call to taint : | call to taint : | -| hash_flow.rb:928:10:928:20 | ( ... ) | hash_flow.rb:910:12:910:22 | call to taint : | hash_flow.rb:928:10:928:20 | ( ... ) | $@ | hash_flow.rb:910:12:910:22 | call to taint : | call to taint : | +| hash_flow.rb:928:10:928:19 | ( ... ) | hash_flow.rb:919:12:919:22 | call to taint : | hash_flow.rb:928:10:928:19 | ( ... ) | $@ | hash_flow.rb:919:12:919:22 | call to taint : | call to taint : | | hash_flow.rb:930:10:930:20 | ( ... ) | hash_flow.rb:912:12:912:22 | call to taint : | hash_flow.rb:930:10:930:20 | ( ... ) | $@ | hash_flow.rb:912:12:912:22 | call to taint : | call to taint : | -| hash_flow.rb:931:10:931:20 | ( ... ) | hash_flow.rb:915:12:915:22 | call to taint : | hash_flow.rb:931:10:931:20 | ( ... ) | $@ | hash_flow.rb:915:12:915:22 | call to taint : | call to taint : | +| hash_flow.rb:932:10:932:20 | ( ... ) | hash_flow.rb:914:12:914:22 | call to taint : | hash_flow.rb:932:10:932:20 | ( ... ) | $@ | hash_flow.rb:914:12:914:22 | call to taint : | call to taint : | | hash_flow.rb:933:10:933:20 | ( ... ) | hash_flow.rb:917:12:917:22 | call to taint : | hash_flow.rb:933:10:933:20 | ( ... ) | $@ | hash_flow.rb:917:12:917:22 | call to taint : | call to taint : | -| hash_flow.rb:951:10:951:19 | ( ... ) | hash_flow.rb:940:12:940:22 | call to taint : | hash_flow.rb:951:10:951:19 | ( ... ) | $@ | hash_flow.rb:940:12:940:22 | call to taint : | call to taint : | +| hash_flow.rb:935:10:935:20 | ( ... ) | hash_flow.rb:919:12:919:22 | call to taint : | hash_flow.rb:935:10:935:20 | ( ... ) | $@ | hash_flow.rb:919:12:919:22 | call to taint : | call to taint : | | hash_flow.rb:953:10:953:19 | ( ... ) | hash_flow.rb:942:12:942:22 | call to taint : | hash_flow.rb:953:10:953:19 | ( ... ) | $@ | hash_flow.rb:942:12:942:22 | call to taint : | call to taint : | -| hash_flow.rb:954:10:954:19 | ( ... ) | hash_flow.rb:945:12:945:22 | call to taint : | hash_flow.rb:954:10:954:19 | ( ... ) | $@ | hash_flow.rb:945:12:945:22 | call to taint : | call to taint : | +| hash_flow.rb:955:10:955:19 | ( ... ) | hash_flow.rb:944:12:944:22 | call to taint : | hash_flow.rb:955:10:955:19 | ( ... ) | $@ | hash_flow.rb:944:12:944:22 | call to taint : | call to taint : | | hash_flow.rb:956:10:956:19 | ( ... ) | hash_flow.rb:947:12:947:22 | call to taint : | hash_flow.rb:956:10:956:19 | ( ... ) | $@ | hash_flow.rb:947:12:947:22 | call to taint : | call to taint : | -| hash_flow.rb:958:10:958:20 | ( ... ) | hash_flow.rb:940:12:940:22 | call to taint : | hash_flow.rb:958:10:958:20 | ( ... ) | $@ | hash_flow.rb:940:12:940:22 | call to taint : | call to taint : | +| hash_flow.rb:958:10:958:19 | ( ... ) | hash_flow.rb:949:12:949:22 | call to taint : | hash_flow.rb:958:10:958:19 | ( ... ) | $@ | hash_flow.rb:949:12:949:22 | call to taint : | call to taint : | | hash_flow.rb:960:10:960:20 | ( ... ) | hash_flow.rb:942:12:942:22 | call to taint : | hash_flow.rb:960:10:960:20 | ( ... ) | $@ | hash_flow.rb:942:12:942:22 | call to taint : | call to taint : | -| hash_flow.rb:961:10:961:20 | ( ... ) | hash_flow.rb:945:12:945:22 | call to taint : | hash_flow.rb:961:10:961:20 | ( ... ) | $@ | hash_flow.rb:945:12:945:22 | call to taint : | call to taint : | +| hash_flow.rb:962:10:962:20 | ( ... ) | hash_flow.rb:944:12:944:22 | call to taint : | hash_flow.rb:962:10:962:20 | ( ... ) | $@ | hash_flow.rb:944:12:944:22 | call to taint : | call to taint : | | hash_flow.rb:963:10:963:20 | ( ... ) | hash_flow.rb:947:12:947:22 | call to taint : | hash_flow.rb:963:10:963:20 | ( ... ) | $@ | hash_flow.rb:947:12:947:22 | call to taint : | call to taint : | +| hash_flow.rb:965:10:965:20 | ( ... ) | hash_flow.rb:949:12:949:22 | call to taint : | hash_flow.rb:965:10:965:20 | ( ... ) | $@ | hash_flow.rb:949:12:949:22 | call to taint : | call to taint : | diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb b/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb index 52818c0feec5..dbadd617b35e 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb @@ -628,19 +628,21 @@ def m38() m38() -def m39() +def m39(x) hash = { :a => taint(39.1), :b => 1, :c => taint(39.2) } + hash[x] = taint(39.3) + hash.transform_keys! {|key| key.to_s } - sink (hash["a"]) # $ hasValueFlow=39.1 $ hasValueFlow=39.2 - sink (hash["b"]) # $ hasValueFlow=39.1 $ hasValueFlow=39.2 - sink (hash["c"]) # $ hasValueFlow=39.1 $ hasValueFlow=39.2 + sink (hash["a"]) # $ hasValueFlow=39.1 $ hasValueFlow=39.2 $ hasValueFlow=39.3 + sink (hash["b"]) # $ hasValueFlow=39.1 $ hasValueFlow=39.2 $ hasValueFlow=39.3 + sink (hash["c"]) # $ hasValueFlow=39.1 $ hasValueFlow=39.2 $ hasValueFlow=39.3 end -m39() +m39(:d) def m40() hash = { diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/type-tracking-hash-flow.expected b/ruby/ql/test/library-tests/dataflow/hash-flow/type-tracking-hash-flow.expected index 9e7ab897c269..ff6899d41c21 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/type-tracking-hash-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/type-tracking-hash-flow.expected @@ -21,19 +21,19 @@ | hash_flow.rb:571:18:571:38 | # $ hasValueFlow=35.1 | Missing result:hasValueFlow=35.1 | | hash_flow.rb:591:20:591:60 | # $ hasValueFlow=36.1 $ hasValueFlow=36.2 | Missing result:hasValueFlow=36.1 | | hash_flow.rb:591:20:591:60 | # $ hasValueFlow=36.1 $ hasValueFlow=36.2 | Missing result:hasValueFlow=36.2 | -| hash_flow.rb:668:14:668:18 | value | Unexpected result: hasValueFlow=41.3 | -| hash_flow.rb:671:10:671:19 | ( ... ) | Unexpected result: hasValueFlow=41.1 | -| hash_flow.rb:702:22:702:42 | # $ hasValueFlow=42.3 | Missing result:hasValueFlow=42.3 | -| hash_flow.rb:704:22:704:42 | # $ hasValueFlow=42.4 | Missing result:hasValueFlow=42.4 | -| hash_flow.rb:774:10:774:14 | ...[...] | Unexpected result: hasValueFlow=46.1 | -| hash_flow.rb:777:10:777:14 | ...[...] | Unexpected result: hasValueFlow=46.3 | -| hash_flow.rb:779:10:779:17 | ...[...] | Unexpected result: hasValueFlow=46.1 | -| hash_flow.rb:782:10:782:17 | ...[...] | Unexpected result: hasValueFlow=46.3 | -| hash_flow.rb:839:22:839:42 | # $ hasValueFlow=48.3 | Missing result:hasValueFlow=48.3 | -| hash_flow.rb:841:22:841:42 | # $ hasValueFlow=48.4 | Missing result:hasValueFlow=48.4 | -| hash_flow.rb:901:22:901:42 | # $ hasValueFlow=50.3 | Missing result:hasValueFlow=50.3 | -| hash_flow.rb:903:22:903:42 | # $ hasValueFlow=50.4 | Missing result:hasValueFlow=50.4 | -| hash_flow.rb:931:22:931:42 | # $ hasValueFlow=51.3 | Missing result:hasValueFlow=51.3 | -| hash_flow.rb:933:22:933:42 | # $ hasValueFlow=51.4 | Missing result:hasValueFlow=51.4 | -| hash_flow.rb:961:22:961:42 | # $ hasValueFlow=52.3 | Missing result:hasValueFlow=52.3 | -| hash_flow.rb:963:22:963:42 | # $ hasValueFlow=52.4 | Missing result:hasValueFlow=52.4 | +| hash_flow.rb:670:14:670:18 | value | Unexpected result: hasValueFlow=41.3 | +| hash_flow.rb:673:10:673:19 | ( ... ) | Unexpected result: hasValueFlow=41.1 | +| hash_flow.rb:704:22:704:42 | # $ hasValueFlow=42.3 | Missing result:hasValueFlow=42.3 | +| hash_flow.rb:706:22:706:42 | # $ hasValueFlow=42.4 | Missing result:hasValueFlow=42.4 | +| hash_flow.rb:776:10:776:14 | ...[...] | Unexpected result: hasValueFlow=46.1 | +| hash_flow.rb:779:10:779:14 | ...[...] | Unexpected result: hasValueFlow=46.3 | +| hash_flow.rb:781:10:781:17 | ...[...] | Unexpected result: hasValueFlow=46.1 | +| hash_flow.rb:784:10:784:17 | ...[...] | Unexpected result: hasValueFlow=46.3 | +| hash_flow.rb:841:22:841:42 | # $ hasValueFlow=48.3 | Missing result:hasValueFlow=48.3 | +| hash_flow.rb:843:22:843:42 | # $ hasValueFlow=48.4 | Missing result:hasValueFlow=48.4 | +| hash_flow.rb:903:22:903:42 | # $ hasValueFlow=50.3 | Missing result:hasValueFlow=50.3 | +| hash_flow.rb:905:22:905:42 | # $ hasValueFlow=50.4 | Missing result:hasValueFlow=50.4 | +| hash_flow.rb:933:22:933:42 | # $ hasValueFlow=51.3 | Missing result:hasValueFlow=51.3 | +| hash_flow.rb:935:22:935:42 | # $ hasValueFlow=51.4 | Missing result:hasValueFlow=51.4 | +| hash_flow.rb:963:22:963:42 | # $ hasValueFlow=52.3 | Missing result:hasValueFlow=52.3 | +| hash_flow.rb:965:22:965:42 | # $ hasValueFlow=52.4 | Missing result:hasValueFlow=52.4 |