Skip to content

Commit

Permalink
Merge pull request JuliaLang#34517 from JuliaLang/backports-release-1.4
Browse files Browse the repository at this point in the history
Backports for Julia 1.4 RC2
  • Loading branch information
KristofferC authored Feb 22, 2020
2 parents b0c33b0 + b4edc25 commit 7612062
Show file tree
Hide file tree
Showing 278 changed files with 898 additions and 435 deletions.
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ If you are already familiar with Julia itself, this blog post by Katharine Hyatt

## Learning Julia

[The learning page](https://julialang.org/learning) has a great list of resources for new and experienced users alike. [This tutorial video](https://www.youtube.com/watch?v=vWkgEddb4-A) is one recommended starting point, as is the "[Invitation to Julia](https://www.youtube.com/watch?v=gQ1y5NUD_RI)" workshop video from JuliaCon 2015 ([slide materials here](https://github.com/dpsanders/invitation_to_julia)). The [Julia documentation](https://docs.julialang.org/en/latest) covers the language and core library features, and is searchable.
[The learning page](https://julialang.org/learning) has a great list of resources for new and experienced users alike. [This tutorial video](https://www.youtube.com/watch?v=vWkgEddb4-A) is one recommended starting point, as is the "[Invitation to Julia](https://www.youtube.com/watch?v=gQ1y5NUD_RI)" workshop video from JuliaCon 2015 ([slide materials here](https://github.com/dpsanders/invitation_to_julia)). The [Julia documentation](https://docs.julialang.org) covers the language and core library features, and is searchable.

## Before filing an issue

Expand Down Expand Up @@ -43,7 +43,7 @@ A useful bug report filed as a GitHub issue provides information about how to re
- Try some simple debugging techniques to help isolate the problem.
- Try running the code with the debug build of Julia with `make debug`, which produces the `usr/bin/julia-debug`.
- Consider running `julia-debug` with a debugger such as `gdb` or `lldb`. Obtaining even a simple [backtrace](http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html) is very useful.
- If Julia segfaults, try following [these debugging tips](https://docs.julialang.org/en/latest/devdocs/backtraces#Reporting-and-analyzing-crashes-(segfaults)-1) to help track down the specific origin of the bug.
- If Julia segfaults, try following [these debugging tips](https://docs.julialang.org/en/v1/devdocs/backtraces/) to help track down the specific origin of the bug.

2. If the problem is caused by a Julia package rather than core Julia, file a bug report with the relevant package author rather than here.

Expand Down Expand Up @@ -86,7 +86,7 @@ There are never enough tests. Track [code coverage at Coveralls](https://coveral

2. Browse through the source files and find some untested functionality (highlighted in red) that you think you might be able to write a test for.

3. Write a test that exercises this functionality---you can add your test to one of the existing files, or start a new one, whichever seems most appropriate to you. If you're adding a new test file, make sure you include it in the list of tests in `test/choosetests.jl`. https://docs.julialang.org/en/latest/stdlib/Test/ may be helpful in explaining how the testing infrastructure works.
3. Write a test that exercises this functionality---you can add your test to one of the existing files, or start a new one, whichever seems most appropriate to you. If you're adding a new test file, make sure you include it in the list of tests in `test/choosetests.jl`. https://docs.julialang.org/en/v1/stdlib/Test/ may be helpful in explaining how the testing infrastructure works.

4. Run `make test-all` to rebuild Julia and run your new test(s). If you had to fix a bug or add functionality in `base`, this will ensure that your test passes and that you have not introduced extraneous whitespace.

Expand Down
16 changes: 11 additions & 5 deletions Make.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1010,13 +1010,17 @@ else
UTF8PROC_INC := $(build_includedir)
endif

# We need python for things like BB triplet recognition. We don't really care
# about version, generally, so just find something that works:
PYTHON := $(shell which python 2>/dev/null || which python3 2>/dev/null || which python2 2>/dev/null || echo not found)

# BinaryBuilder options. We default to "on" for all the projects listed in BB_PROJECTS,
# but only if contrib/normalize_triplet.py works for our requested triplet.
ifeq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) >/dev/null 2>/dev/null; echo $$?),0)
ifeq ($(shell $(PYTHON) $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) >/dev/null 2>/dev/null; echo $$?),0)
USE_BINARYBUILDER ?= 1
else
ifneq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py x86_64-linux-gnu),x86_64-linux-gnu)
$(warning python normalize_triplet.py appears to be non-functional, so BinaryBuilder disabled)
ifneq ($(shell $(PYTHON) $(JULIAHOME)/contrib/normalize_triplet.py x86_64-linux-gnu),x86_64-linux-gnu)
$(warning normalize_triplet.py appears to be non-functional (used python interpreter "$(PYTHON)"), so BinaryBuilder disabled)
endif
USE_BINARYBUILDER ?= 0
endif
Expand Down Expand Up @@ -1340,18 +1344,20 @@ endif
exec = $(shell $(call spawn,$(1)))

JULIA_BUILD_MODE := release
JULIA_LIBSUFFIX:=
ifeq (,$(findstring release,$(MAKECMDGOALS)))
ifneq (,$(findstring debug,$(MAKECMDGOALS)))
JULIA_BUILD_MODE := debug
JULIA_LIBSUFFIX:=-debug
endif
endif

JULIA_EXECUTABLE_debug := $(build_bindir)/julia-debug$(EXE)
JULIA_EXECUTABLE_release := $(build_bindir)/julia$(EXE)
JULIA_EXECUTABLE := $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE))

JULIA_SYSIMG_debug := $(build_private_libdir)/sys-debug.$(SHLIB_EXT)
JULIA_SYSIMG_release := $(build_private_libdir)/sys.$(SHLIB_EXT)
JULIA_SYSIMG := $(JULIA_SYSIMG_$(JULIA_BUILD_MODE))

# Colors for make
ifndef VERBOSE
VERBOSE := 0
Expand Down
2 changes: 0 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -571,8 +571,6 @@ distcleanall: cleanall
test: check-whitespace $(JULIA_BUILD_MODE)
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/test default JULIA_BUILD_MODE=$(JULIA_BUILD_MODE)

JULIA_SYSIMG=$(build_private_libdir)/sys$(JULIA_LIBSUFFIX).$(SHLIB_EXT)

testall: check-whitespace $(JULIA_BUILD_MODE)
cp $(JULIA_SYSIMG) $(BUILDROOT)/local.$(SHLIB_EXT)
$(call spawn,$(JULIA_EXECUTABLE) -J $(call cygpath_w,$(BUILDROOT)/local.$(SHLIB_EXT)) -e 'true')
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ The Julia source code is organized as follows:
## Terminal, Editors and IDEs

The Julia REPL is quite powerful. See the section in the manual on
[the Julia REPL](https://docs.julialang.org/en/latest/stdlib/REPL/)
[the Julia REPL](https://docs.julialang.org/en/v1/stdlib/REPL/)
for more details.

Support for editing Julia is available for many
Expand Down
2 changes: 1 addition & 1 deletion base/client.jl
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ using ..Base
# include(fname::AbstractString) = Main.Base.include(Main, fname)
function include(fname::AbstractString)
mod = Main
isa(fname, String) || (fname = Base.convert(String, fname))
isa(fname, String) || (fname = Base.convert(String, fname)::String)
path, prev = Base._include_dependency(mod, fname)
for callback in Base.include_callbacks # to preserve order, must come before Core.include
Base.invokelatest(callback, mod, path)
Expand Down
8 changes: 6 additions & 2 deletions base/compiler/inferenceresult.jl
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,13 @@ function matching_cache_argtypes(linfo::MethodInstance, given_argtypes::Vector)
if linfo.def.isva
isva_given_argtypes = Vector{Any}(undef, nargs)
for i = 1:(nargs - 1)
isva_given_argtypes[i] = given_argtypes[i]
isva_given_argtypes[i] = argtype_by_index(given_argtypes, i)
end
if length(given_argtypes) >= nargs || !isvarargtype(given_argtypes[end])
isva_given_argtypes[nargs] = tuple_tfunc(given_argtypes[nargs:end])
else
isva_given_argtypes[nargs] = tuple_tfunc(given_argtypes[end:end])
end
isva_given_argtypes[nargs] = tuple_tfunc(given_argtypes[nargs:end])
given_argtypes = isva_given_argtypes
end
cache_argtypes, overridden_by_const = matching_cache_argtypes(linfo, nothing)
Expand Down
1 change: 0 additions & 1 deletion base/iterators.jl
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ reverse(G::Generator) = Generator(G.f, reverse(G.iter))
reverse(r::Reverse) = r.itr
reverse(x::Union{Number,AbstractChar}) = x
reverse(p::Pair) = Base.reverse(p) # copying pairs is cheap
reverse(xs::Tuple) = Base.reverse(xs) # allows inference in mapfoldr and similar

iterate(r::Reverse{<:Tuple}, i::Int = length(r.itr)) = i < 1 ? nothing : (r.itr[i], i-1)

Expand Down
10 changes: 6 additions & 4 deletions base/loading.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1086,8 +1086,8 @@ include_string(m::Module, txt::AbstractString, fname::AbstractString="string") =

function source_path(default::Union{AbstractString,Nothing}="")
s = current_task().storage
if s !== nothing && haskey(s, :SOURCE_PATH)
return s[:SOURCE_PATH]
if s !== nothing && haskey(s::IdDict{Any,Any}, :SOURCE_PATH)
return s[:SOURCE_PATH]::Union{Nothing,String}
end
return default
end
Expand Down Expand Up @@ -1264,6 +1264,8 @@ function compilecache(pkg::PkgId, path::String)
open(cachefile, "a+") do f
write(f, _crc32c(seekstart(f)))
end
# inherit permission from the source file
chmod(cachefile, filemode(path) & 0o777)
elseif p.exitcode == 125
return PrecompilableError()
else
Expand Down Expand Up @@ -1485,7 +1487,7 @@ Alternatively see [`PROGRAM_FILE`](@ref).
"""
macro __FILE__()
__source__.file === nothing && return nothing
return String(__source__.file)
return String(__source__.file::Symbol)
end

"""
Expand All @@ -1497,6 +1499,6 @@ Return the current working directory if run from a REPL or if evaluated by `juli
"""
macro __DIR__()
__source__.file === nothing && return nothing
_dirname = dirname(String(__source__.file))
_dirname = dirname(String(__source__.file::Symbol))
return isempty(_dirname) ? pwd() : abspath(_dirname)
end
8 changes: 5 additions & 3 deletions base/logging.jl
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ end
macro _sourceinfo()
esc(quote
(__module__,
__source__.file === nothing ? "?" : String(__source__.file),
__source__.file === nothing ? "?" : String(__source__.file::Symbol),
__source__.line)
end)
end
Expand Down Expand Up @@ -248,6 +248,8 @@ function log_record_id(_module, level, message, log_kws)
end
end

default_group(file) = Symbol(splitext(basename(file))[1])

# Generate code for logging macros
function logmsg_code(_module, file, line, level, message, exs...)
id = Expr(:quote, log_record_id(_module, level, message, exs))
Expand Down Expand Up @@ -293,12 +295,12 @@ function logmsg_code(_module, file, line, level, message, exs...)
if group === nothing
group = if isdefined(Base, :basename) && isa(file, String)
# precompute if we can
QuoteNode(splitext(basename(file))[1])
QuoteNode(default_group(file))
else
# memoized run-time execution
ref = Ref{Symbol}()
:(isassigned($ref) ? $ref[]
: $ref[] = Symbol(splitext(basename(something($file, "")))[1]))
: $ref[] = default_group(something($file, "")))
end
end

Expand Down
14 changes: 12 additions & 2 deletions base/math.jl
Original file line number Diff line number Diff line change
Expand Up @@ -613,9 +613,19 @@ julia> hypot(3, 4im)
hypot(x::Number, y::Number) = hypot(promote(x, y)...)
hypot(x::Complex, y::Complex) = hypot(abs(x), abs(y))
hypot(x::T, y::T) where {T<:Real} = hypot(float(x), float(y))
hypot(x::T, y::T) where {T<:Number} = (z = y/x; abs(x) * sqrt(one(z) + z*z))
function hypot(x::T, y::T) where {T<:Number}
if !iszero(x)
z = y/x
z2 = z*z

abs(x) * sqrt(oneunit(z2) + z2)
else
abs(y)
end
end

function hypot(x::T, y::T) where T<:AbstractFloat
#Return Inf if either or both imputs is Inf (Compliance with IEEE754)
# Return Inf if either or both inputs is Inf (Compliance with IEEE754)
if isinf(x) || isinf(y)
return T(Inf)
end
Expand Down
5 changes: 4 additions & 1 deletion base/reduce.jl
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,12 @@ foldl(op, itr; kw...) = mapfoldl(identity, op, itr; kw...)

function mapfoldr_impl(f, op, nt, itr)
op′, itr′ = _xfadjoint(BottomRF(FlipArgs(op)), Generator(f, itr))
return foldl_impl(op′, nt, Iterators.reverse(itr′))
return foldl_impl(op′, nt, _reverse(itr′))
end

_reverse(itr) = Iterators.reverse(itr)
_reverse(itr::Tuple) = reverse(itr) #33235

struct FlipArgs{F}
f::F
end
Expand Down
2 changes: 1 addition & 1 deletion base/reducedim.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# for reductions that expand 0 dims to 1
reduced_index(i::OneTo) = OneTo(1)
reduced_index(i::Union{Slice, IdentityUnitRange}) = first(i):first(i)
reduced_index(i::Union{Slice, IdentityUnitRange}) = oftype(i, first(i):first(i))
reduced_index(i::AbstractUnitRange) =
throw(ArgumentError(
"""
Expand Down
14 changes: 7 additions & 7 deletions base/reflection.jl
Original file line number Diff line number Diff line change
Expand Up @@ -319,8 +319,8 @@ struct DataTypeLayout
nfields::UInt32
npointers::UInt32
firstptr::Int32
alignment::UInt32
# alignment : 9;
alignment::UInt16
flags::UInt16
# haspadding : 1;
# fielddesc_type : 2;
end
Expand All @@ -335,7 +335,7 @@ function datatype_alignment(dt::DataType)
@_pure_meta
dt.layout == C_NULL && throw(UndefRefError())
alignment = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).alignment
return Int(alignment & 0x1FF)
return Int(alignment)
end

# amount of total space taken by T when stored in a container
Expand Down Expand Up @@ -368,8 +368,8 @@ Can be called on any `isconcretetype`.
function datatype_haspadding(dt::DataType)
@_pure_meta
dt.layout == C_NULL && throw(UndefRefError())
alignment = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).alignment
return (alignment >> 9) & 1 == 1
flags = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).flags
return flags & 1 == 1
end

"""
Expand Down Expand Up @@ -397,8 +397,8 @@ See also [`fieldoffset`](@ref).
function datatype_fielddesc_type(dt::DataType)
@_pure_meta
dt.layout == C_NULL && throw(UndefRefError())
alignment = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).alignment
return (alignment >> 10) & 3
flags = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).flags
return (flags >> 1) & 3
end

"""
Expand Down
14 changes: 10 additions & 4 deletions base/show.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1580,11 +1580,17 @@ function show_unquoted(io::IO, ex::Expr, indent::Int, prec::Int, quote_level::In
print(io, '(')
ind = indent + indent_width
for i = 1:length(ex.args)
i > 1 && print(io, ";\n", ' '^ind)
if i > 1
# if there was only a comment before the first semicolon, the expression would get parsed as a NamedTuple
if !(i == 2 && ex.args[1] isa LineNumberNode)
print(io, ';')
end
print(io, "\n", ' '^ind)
end
show_unquoted(io, ex.args[i], ind, -1, quote_level)
end
if length(ex.args) < 2
print(isempty(ex.args) ? "nothing;)" : ";)")
print(io, isempty(ex.args) ? "nothing;)" : ";)")
else
print(io, ')')
end
Expand Down Expand Up @@ -2055,13 +2061,13 @@ alignment(io::IO, x::Number) = (length(sprint(show, x, context=io, sizehint=0)),
alignment(io::IO, x::Integer) = (length(sprint(show, x, context=io, sizehint=0)), 0)
"`alignment(4.23)` yields (1,3) for `4` and `.23`"
function alignment(io::IO, x::Real)
m = match(r"^(.*?)((?:[\.eE].*)?)$", sprint(show, x, context=io, sizehint=0))
m = match(r"^(.*?)((?:[\.eEfF].*)?)$", sprint(show, x, context=io, sizehint=0))
m === nothing ? (length(sprint(show, x, context=io, sizehint=0)), 0) :
(length(m.captures[1]), length(m.captures[2]))
end
"`alignment(1 + 10im)` yields (3,5) for `1 +` and `_10im` (plus sign on left, space on right)"
function alignment(io::IO, x::Complex)
m = match(r"^(.*[^e][\+\-])(.*)$", sprint(show, x, context=io, sizehint=0))
m = match(r"^(.*[^ef][\+\-])(.*)$", sprint(show, x, context=io, sizehint=0))
m === nothing ? (length(sprint(show, x, context=io, sizehint=0)), 0) :
(length(m.captures[1]), length(m.captures[2]))
end
Expand Down
2 changes: 1 addition & 1 deletion deps/Versions.make
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ PCRE_BB_REL = 0
DSFMT_VER = 2.2.3
DSFMT_BB_REL = 0
OPENBLAS_VER = 0.3.5
OPENBLAS_BB_REL = 0
OPENBLAS_BB_REL = 1
LAPACK_VER = 3.5.0
SUITESPARSE_VER = 5.4.0
SUITESPARSE_BB_REL = 2
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0740cc29f22c662e265737045e637112
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2aafd248b82de55dccdec65fea088c1726967fbdae01afd251645349fcbc0da01893dce714a93a644d6f0e051aba05d43cec84c49dfb73b41a9532754886a518
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
89ce36300ffd0f2bc1aeddcf019a3aa4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3d24df343627777c8adb7ffd90379cdbfc48fdbdf7fe2aae8b8a4ad83c534cce6958a23eaeba9d703f4f00f293d36c8d618c930d66e3fc04dd9b745ad8aa447f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0bb8ede857f498c5c4b2b7c1cdfab22f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
01923975b5121e9ec144d6110a4072d51a764eae8cb4de3dd4af6698759832342fbf56c7b2102097e4fd1e79df0bf05935b58af6fd8ca6ee81637876fddf8bb8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0c9eb5839c0e41fef06c390cba6bc032
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8722dbf467c8729d1d2eb64b86d3457daff0906e4a839990ca7eac3ca094e6542da957f0e9c2050e7b6526462dde3383cec94fea8c56c19a289a4a113055af03
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
49bc35e66e801f4d999c7fc43c0edc23
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bd76fdba0242051a3b64dc962e6c03ddde69ca213dca5935348ee9d8a65be88f2cdb50882e85a238e738d441472c97020ce96f50d4fd7a901293cb9424b23d75
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f70ea31676f544cf8eb8d4ea981c096e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
925906ffaa2854aaf645c8187fec41182dce06efe3cd47af1849ae06c92ca1bd44de8783c455112092d7830fcd06466f2ba7e8e0a5ab2567f0370d7cfa725bf1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
c6ec99ca9a26a119a8a8b3e14869f0dc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1eff4695a923f11ae0465d4a3f3f8fd8404689637c46a3766305bae019562986212b63865c4c678d35e639ce5184597de04b821b633a3bea9832838a547892ca
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9a14bed041690c24c171c2cd03e9218e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8ce3526e4214f51c87d7373c26a7bf6c8c363ca67cbb1b3920bc6cae5f1ec27ec3b50f3c153f0c14d314e68bc4d932145cb6b010f7800b671913b645f1d707f4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
72eac17e11be9a2252236f218d205834
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4e6db589316c2282e0dcd30c02202ca5fbda5ccf59d5ea08060419bdf579d5695bfbf7ad2163032233753283e430f07998b808bb620fb090a2d79e9d03c7b231
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eb4e92189affd15c3cf1d047990b8d14
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b92403df2e4e0f174d544d6cde53f1ef94dd03ef34866a0a782f5853de9d2b9165a0466195fba79a2da8e582fcff0b745d6b23f395f7b11f13aa480c4aa166f5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bb9a3e9aa5b301f9c80bd019cfa7d805
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5c72d5f72a3923b68eeedaa7f6ca49d99558ae6ba647f171e0f8f2f147a8266541177432c7f260f09fddd6096046ab9830aeb24be312ab54678c53113d2c14a3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
c3881b19da149713bd7b3e205ae55c1d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
03b21f17a720e41642794a603b76ff627f19802ae7f0563590d8a5d3db9ce4415dd65231c86b7989743aaf9b587b8ab3b141bafe049f6957aa9ecbf7ae740d8f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f2b1cf1684dd90cd34b866b67c51a8f8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6ad5a99c0237e905bbc194f0a41529504f32e2b4ab8a08b292de80e527957ea2cdfbebd609e804c7072216749aa7dbf0539c41f5f68217bc65af623acbfd1d59
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
41f88ee5ff86f56cb2233729adabddf4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
722374a4bf2700267b6138f3c524653dd2f4272c0ceca5431ef2c60298dc1e7908e733e1a6cfd5ec975cead68e09fe755be29b56cf7d3d0a18a09f95d142a776
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dc28cdcfa74e06e5385d02016cc84cbd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
561b6773169fdd8ba0966a79448281c163984f67eee7c9d89f826733232776008011083a2ce6375413de06eae80e20a28bd9c46c4bef51078c729b9ca785921b
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
28cf728c02deb8506d72e1dd9814c308
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12f15a6a102f14b6b87e2ffce1fb09523eb9977ae66240481fc1aa450a45517d81a29116964af673dd28aba9903d4146aa562112a4a74323c55355f793c1ba2e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
02eb0c570837afe5ee9a76571af2fbfb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
288246efb49795234fb555ed19d08f33f1af20b221a160b0885ad6a18036b8bac299fea8333a977750e40adf68c45899d3a5916f885556f607126f682729b481
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d79b813303ad7d5758ab86a2ec16602b
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
036b698e77442d1fc6cc623b97da3fd53c487959866faf6c4624b0566472955d14bd2062cc25e6f4199afc3f63e78d75b4e920a44d9e270ac3cbd0563aefe25d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
878c64ad9e182be661f8c5402fc38c67
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0737c4358f968d3d1695156df5adcfb3ec0ed71e4f7293cf7e022b514709d5139007f7ffa130007e4e73f5bda89e8354d72a4109d224fa9ee0aaf66517c1fd13
Loading

0 comments on commit 7612062

Please sign in to comment.