From f323dc9fad262cbe56908c7947e306f66e02f7a5 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 27 May 2015 11:38:44 +0300 Subject: [PATCH 001/174] Turn off NewRelic agent for autotest --- config/initializers/new_relic_app_name.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/initializers/new_relic_app_name.rb b/config/initializers/new_relic_app_name.rb index bc1cf7a78..9780ac88c 100644 --- a/config/initializers/new_relic_app_name.rb +++ b/config/initializers/new_relic_app_name.rb @@ -1 +1,3 @@ -NewRelic::Agent.config[:app_name] = "#{ENV['new_relic_app_name']} - #{Rails.env}" if ENV['new_relic_app_name'].present? +unless Rails.env.test? + NewRelic::Agent.config[:app_name] = "#{ENV['new_relic_app_name']} - #{Rails.env}" if ENV['new_relic_app_name'].present? +end From 6d8b71499569c450d42a58b90952441733f8360e Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 27 May 2015 11:40:54 +0300 Subject: [PATCH 002/174] schema file update --- db/schema.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index 170dbea93..587ef3991 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150521120145) do +ActiveRecord::Schema.define(version: 20150525075550) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From 5e6cb6cbd10fe265a89e30d5c923c3cb16dd7273 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 27 May 2015 11:47:53 +0300 Subject: [PATCH 003/174] Server does not reply with clTRID when not specified in request --- app/views/epp/shared/_trID.xml.builder | 2 +- spec/epp/domain_spec.rb | 2 +- spec/epp/session_spec.rb | 7 +++++++ spec/support/epp.rb | 18 +++++++++--------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/views/epp/shared/_trID.xml.builder b/app/views/epp/shared/_trID.xml.builder index 5d59baa0c..995c27c05 100644 --- a/app/views/epp/shared/_trID.xml.builder +++ b/app/views/epp/shared/_trID.xml.builder @@ -1,4 +1,4 @@ xml.trID do - xml.clTRID params[:clTRID] + xml.clTRID params[:clTRID] if params[:clTRID].present? xml.svTRID @svTRID end diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 4078f5dd0..b886e229e 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -1931,10 +1931,10 @@ describe 'EPP Domain', epp: true do domain.save xml = domain_info_xml(name: { value: domain.name }) - response = epp_plain_request(xml, :xml) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' + response[:clTRID].should be_nil inf_data = response[:parsed].css('resData infData') inf_data.css('name').text.should == domain.name diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 85d536b16..4f4cde6c4 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -46,6 +46,13 @@ describe 'EPP Session', epp: true do response[:clTRID].should == 'ABC-12345' end + it 'should not have clTRID in response if client does not send it' do + epp_xml_no_cltrid = EppXml.new(cl_trid: '') + wrong_user = epp_xml_no_cltrid.session.login(clID: { value: 'wrong-user' }, pw: { value: 'ghyt9e4fu' }) + response = epp_plain_request(wrong_user, :xml) + response[:clTRID].should be_nil + end + context 'with valid user' do it 'logs in epp user' do response = epp_plain_request(@login_xml_cache, :xml) diff --git a/spec/support/epp.rb b/spec/support/epp.rb index 052074ca0..f877bfc2f 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -31,14 +31,14 @@ module Epp @xml ||= EppXml.new(cl_trid: 'ABC-12345') case user when :gitlab - @gitlab_login_xml ||= - @xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }) + @gitlab_login_xml ||= + @xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }) when :registrar1 - @registrar1_login_xml ||= - @xml.session.login(clID: { value: 'registrar1' }, pw: { value: 'ghyt9e4fu' }) + @registrar1_login_xml ||= + @xml.session.login(clID: { value: 'registrar1' }, pw: { value: 'ghyt9e4fu' }) when :registrar2 - @registrar2_login_xml ||= - @xml.session.login(clID: { value: 'registrar2' }, pw: { value: 'ghyt9e4fu' }) + @registrar2_login_xml ||= + @xml.session.login(clID: { value: 'registrar2' }, pw: { value: 'ghyt9e4fu' }) end end @@ -78,7 +78,7 @@ module Epp rescue => e e end - + def server # tag and password not in use, add those at login xml @server ||= Epp::Server.new({ server: 'localhost', port: 701, tag: '', password: '' }) @@ -89,7 +89,7 @@ module Epp obj = { results: [], - clTRID: res.css('epp trID clTRID').text, + clTRID: res.css('epp trID clTRID').first.try(:text), parsed: res.remove_namespaces!, raw: raw } @@ -127,7 +127,7 @@ module Epp xml_params = defaults.deep_merge(xml_params) - epp_xml = EppXml::Domain.new(cl_trid: 'ABC-12345') + epp_xml = EppXml::Domain.new(cl_trid: '') epp_xml.info(xml_params) end From 3b50ab2452c92949440ab3c7272df847fabd5bad Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 27 May 2015 12:36:13 +0300 Subject: [PATCH 004/174] Rubocop update --- config/initializers/new_relic_app_name.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/initializers/new_relic_app_name.rb b/config/initializers/new_relic_app_name.rb index 9780ac88c..4b488508a 100644 --- a/config/initializers/new_relic_app_name.rb +++ b/config/initializers/new_relic_app_name.rb @@ -1,3 +1,5 @@ +# rubocop:disable Metrics/LineLength unless Rails.env.test? NewRelic::Agent.config[:app_name] = "#{ENV['new_relic_app_name']} - #{Rails.env}" if ENV['new_relic_app_name'].present? end +# rubocop:enable Metrics/LineLength From 5cff61ee50f9a8c815882d47f9d7d1a78d98398d Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 27 May 2015 12:37:43 +0300 Subject: [PATCH 005/174] New relic initialize now rubocop friendly --- config/initializers/new_relic_app_name.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/config/initializers/new_relic_app_name.rb b/config/initializers/new_relic_app_name.rb index 4b488508a..a7a08cbb4 100644 --- a/config/initializers/new_relic_app_name.rb +++ b/config/initializers/new_relic_app_name.rb @@ -1,5 +1,3 @@ -# rubocop:disable Metrics/LineLength -unless Rails.env.test? - NewRelic::Agent.config[:app_name] = "#{ENV['new_relic_app_name']} - #{Rails.env}" if ENV['new_relic_app_name'].present? +if !Rails.env.test? && ENV['new_relic_app_name'].present? + NewRelic::Agent.config[:app_name] = "#{ENV['new_relic_app_name']} - #{Rails.env}" end -# rubocop:enable Metrics/LineLength From 99ad0993f651a3d3db0fa58883f4ecc9ad2e8286 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 27 May 2015 13:39:04 +0300 Subject: [PATCH 006/174] Move trID under response #2637 --- app/views/epp/contacts/check.xml.builder | 2 +- app/views/epp/contacts/create.xml.builder | 2 +- app/views/epp/contacts/delete.xml.builder | 2 +- app/views/epp/contacts/info.xml.builder | 8 ++--- app/views/epp/contacts/update.xml.builder | 2 +- app/views/epp/domains/check.xml.builder | 2 +- app/views/epp/domains/create.xml.builder | 4 +-- app/views/epp/domains/info.xml.builder | 34 +++++++++---------- app/views/epp/domains/renew.xml.builder | 2 +- app/views/epp/domains/success.xml.builder | 4 +-- .../epp/domains/success_pending.xml.builder | 3 +- app/views/epp/domains/transfer.xml.builder | 4 +-- app/views/epp/error.xml.builder | 3 +- app/views/epp/poll/poll_ack.xml.builder | 2 +- app/views/epp/poll/poll_keyrelay.xml.builder | 2 +- .../epp/poll/poll_no_messages.xml.builder | 2 +- app/views/epp/poll/poll_req.xml.builder | 2 +- app/views/epp/sessions/login_fail.xml.builder | 4 +-- .../epp/sessions/login_success.xml.builder | 2 +- app/views/epp/sessions/logout.xml.builder | 4 +-- app/views/epp/shared/_trID.xml.builder | 7 ++-- app/views/epp/shared/success.xml.builder | 4 +-- 22 files changed, 50 insertions(+), 51 deletions(-) diff --git a/app/views/epp/contacts/check.xml.builder b/app/views/epp/contacts/check.xml.builder index 4df3597e3..efa5ae231 100644 --- a/app/views/epp/contacts/check.xml.builder +++ b/app/views/epp/contacts/check.xml.builder @@ -15,6 +15,6 @@ xml.epp_head do end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/contacts/create.xml.builder b/app/views/epp/contacts/create.xml.builder index 85f5f50c1..8e96f27f0 100644 --- a/app/views/epp/contacts/create.xml.builder +++ b/app/views/epp/contacts/create.xml.builder @@ -11,6 +11,6 @@ xml.epp_head do end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/contacts/delete.xml.builder b/app/views/epp/contacts/delete.xml.builder index 4490335a9..a111f92d0 100644 --- a/app/views/epp/contacts/delete.xml.builder +++ b/app/views/epp/contacts/delete.xml.builder @@ -4,6 +4,6 @@ xml.epp_head do xml.msg 'Command completed successfully' end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/contacts/info.xml.builder b/app/views/epp/contacts/info.xml.builder index cdec58fe2..ce692020c 100644 --- a/app/views/epp/contacts/info.xml.builder +++ b/app/views/epp/contacts/info.xml.builder @@ -28,11 +28,11 @@ xml.epp_head do end xml.tag!('contact:clID', @contact.registrar.try(:name)) - xml.tag!('contact:crID', @contact.creator.try(:registrar)) + xml.tag!('contact:crID', @contact.creator.try(:registrar)) xml.tag!('contact:crDate', @contact.created_at) if @contact.updated_at != @contact.created_at xml.tag!('contact:upID', @contact.updator.try(:registrar)) - xml.tag!('contact:upDate', @contact.updated_at) + xml.tag!('contact:upDate', @contact.updated_at) end # xml.tag!('contact:trDate', '123') if false if can? :view_password, @contact, @password @@ -49,12 +49,12 @@ xml.epp_head do if can? :view_full_info, @contact, @password xml.tag!('extension') do xml.tag!('eis:extdata', 'xmlns:eis' => 'urn:ee:eis:xml:epp:eis-1.0') do - xml.tag!('eis:ident', @contact.ident, + xml.tag!('eis:ident', @contact.ident, type: @contact.ident_type, cc: @contact.ident_country_code) end end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/contacts/update.xml.builder b/app/views/epp/contacts/update.xml.builder index 85f5f50c1..8e96f27f0 100644 --- a/app/views/epp/contacts/update.xml.builder +++ b/app/views/epp/contacts/update.xml.builder @@ -11,6 +11,6 @@ xml.epp_head do end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/domains/check.xml.builder b/app/views/epp/domains/check.xml.builder index 2a6398b15..6bfc382a3 100644 --- a/app/views/epp/domains/check.xml.builder +++ b/app/views/epp/domains/check.xml.builder @@ -15,6 +15,6 @@ xml.epp_head do end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/domains/create.xml.builder b/app/views/epp/domains/create.xml.builder index ada6b7362..6ccfda07b 100644 --- a/app/views/epp/domains/create.xml.builder +++ b/app/views/epp/domains/create.xml.builder @@ -11,7 +11,7 @@ xml.epp_head do xml.tag!('domain:exDate', @domain.valid_to) end end - end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder index 22b352dfb..57d4903f0 100644 --- a/app/views/epp/domains/info.xml.builder +++ b/app/views/epp/domains/info.xml.builder @@ -59,26 +59,26 @@ xml.epp_head do end end end - end - xml.extension do - xml.tag!('secDNS:infData', 'xmlns:secDNS' => 'urn:ietf:params:xml:ns:secDNS-1.1') do - @domain.dnskeys.sort.each do |key| - xml.tag!('secDNS:dsData') do - xml.tag!('secDNS:keyTag', key.ds_key_tag) - xml.tag!('secDNS:alg', key.ds_alg) - xml.tag!('secDNS:digestType', key.ds_digest_type) - xml.tag!('secDNS:digest', key.ds_digest) - xml.tag!('secDNS:keyData') do - xml.tag!('secDNS:flags', key.flags) - xml.tag!('secDNS:protocol', key.protocol) - xml.tag!('secDNS:alg', key.alg) - xml.tag!('secDNS:pubKey', key.public_key) + xml.extension do + xml.tag!('secDNS:infData', 'xmlns:secDNS' => 'urn:ietf:params:xml:ns:secDNS-1.1') do + @domain.dnskeys.sort.each do |key| + xml.tag!('secDNS:dsData') do + xml.tag!('secDNS:keyTag', key.ds_key_tag) + xml.tag!('secDNS:alg', key.ds_alg) + xml.tag!('secDNS:digestType', key.ds_digest_type) + xml.tag!('secDNS:digest', key.ds_digest) + xml.tag!('secDNS:keyData') do + xml.tag!('secDNS:flags', key.flags) + xml.tag!('secDNS:protocol', key.protocol) + xml.tag!('secDNS:alg', key.alg) + xml.tag!('secDNS:pubKey', key.public_key) + end end end end - end - end if @domain.dnskeys.any? + end if @domain.dnskeys.any? - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end diff --git a/app/views/epp/domains/renew.xml.builder b/app/views/epp/domains/renew.xml.builder index 34484b096..f1d2a7742 100644 --- a/app/views/epp/domains/renew.xml.builder +++ b/app/views/epp/domains/renew.xml.builder @@ -11,6 +11,6 @@ xml.epp_head do end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/domains/success.xml.builder b/app/views/epp/domains/success.xml.builder index a8bfe162f..a111f92d0 100644 --- a/app/views/epp/domains/success.xml.builder +++ b/app/views/epp/domains/success.xml.builder @@ -3,7 +3,7 @@ xml.epp_head do xml.result('code' => '1000') do xml.msg 'Command completed successfully' end - end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end diff --git a/app/views/epp/domains/success_pending.xml.builder b/app/views/epp/domains/success_pending.xml.builder index 3d1783009..e7c52f970 100644 --- a/app/views/epp/domains/success_pending.xml.builder +++ b/app/views/epp/domains/success_pending.xml.builder @@ -3,7 +3,6 @@ xml.epp_head do xml.result('code' => '1001') do xml.msg 'Command completed successfully; action pending' end + render('epp/shared/trID', builder: xml) end - - xml << render('/epp/shared/trID') end diff --git a/app/views/epp/domains/transfer.xml.builder b/app/views/epp/domains/transfer.xml.builder index bea166939..59fffc852 100644 --- a/app/views/epp/domains/transfer.xml.builder +++ b/app/views/epp/domains/transfer.xml.builder @@ -7,7 +7,7 @@ xml.epp_head do xml.resData do xml << render('epp/domains/partials/transfer', builder: xml, dt: @domain_transfer) end - end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end diff --git a/app/views/epp/error.xml.builder b/app/views/epp/error.xml.builder index 718440bd7..796856f4c 100644 --- a/app/views/epp/error.xml.builder +++ b/app/views/epp/error.xml.builder @@ -20,7 +20,6 @@ xml.epp_head do end end + render('epp/shared/trID', builder: xml) end - - xml << render('/epp/shared/trID') end diff --git a/app/views/epp/poll/poll_ack.xml.builder b/app/views/epp/poll/poll_ack.xml.builder index 3ba104dcd..05ea8b8d0 100644 --- a/app/views/epp/poll/poll_ack.xml.builder +++ b/app/views/epp/poll/poll_ack.xml.builder @@ -6,6 +6,6 @@ xml.epp_head do xml.tag!('msgQ', 'count' => current_user.queued_messages.count, 'id' => @message.id) - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/poll/poll_keyrelay.xml.builder b/app/views/epp/poll/poll_keyrelay.xml.builder index 049b0bf39..4189c6e82 100644 --- a/app/views/epp/poll/poll_keyrelay.xml.builder +++ b/app/views/epp/poll/poll_keyrelay.xml.builder @@ -44,6 +44,6 @@ xml.epp( end end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/poll/poll_no_messages.xml.builder b/app/views/epp/poll/poll_no_messages.xml.builder index 1e57a1216..b48b8cef5 100644 --- a/app/views/epp/poll/poll_no_messages.xml.builder +++ b/app/views/epp/poll/poll_no_messages.xml.builder @@ -4,6 +4,6 @@ xml.epp_head do xml.msg 'Command completed successfully; no messages' end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/poll/poll_req.xml.builder b/app/views/epp/poll/poll_req.xml.builder index f839670a3..b79ba160b 100644 --- a/app/views/epp/poll/poll_req.xml.builder +++ b/app/views/epp/poll/poll_req.xml.builder @@ -15,6 +15,6 @@ xml.epp_head do end end if @object - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/sessions/login_fail.xml.builder b/app/views/epp/sessions/login_fail.xml.builder index a76057270..5e2e99162 100644 --- a/app/views/epp/sessions/login_fail.xml.builder +++ b/app/views/epp/sessions/login_fail.xml.builder @@ -3,7 +3,7 @@ xml.epp_head do xml.result('code' => '2501') do xml.msg(@msg || 'Authentication error; server closing connection') end - end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end diff --git a/app/views/epp/sessions/login_success.xml.builder b/app/views/epp/sessions/login_success.xml.builder index 4490335a9..a111f92d0 100644 --- a/app/views/epp/sessions/login_success.xml.builder +++ b/app/views/epp/sessions/login_success.xml.builder @@ -4,6 +4,6 @@ xml.epp_head do xml.msg 'Command completed successfully' end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) end end diff --git a/app/views/epp/sessions/logout.xml.builder b/app/views/epp/sessions/logout.xml.builder index 917481a7e..5bf1f8873 100644 --- a/app/views/epp/sessions/logout.xml.builder +++ b/app/views/epp/sessions/logout.xml.builder @@ -3,7 +3,7 @@ xml.epp_head do xml.result('code' => '1500') do xml.msg 'Command completed successfully; ending session' end - end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end diff --git a/app/views/epp/shared/_trID.xml.builder b/app/views/epp/shared/_trID.xml.builder index 995c27c05..ace7b1beb 100644 --- a/app/views/epp/shared/_trID.xml.builder +++ b/app/views/epp/shared/_trID.xml.builder @@ -1,4 +1,5 @@ -xml.trID do - xml.clTRID params[:clTRID] if params[:clTRID].present? - xml.svTRID @svTRID +# builder ||= xml +builder.trID do + builder.clTRID params[:clTRID] if params[:clTRID].present? + builder.svTRID @svTRID end diff --git a/app/views/epp/shared/success.xml.builder b/app/views/epp/shared/success.xml.builder index a8bfe162f..a111f92d0 100644 --- a/app/views/epp/shared/success.xml.builder +++ b/app/views/epp/shared/success.xml.builder @@ -3,7 +3,7 @@ xml.epp_head do xml.result('code' => '1000') do xml.msg 'Command completed successfully' end - end - xml << render('/epp/shared/trID') + render('epp/shared/trID', builder: xml) + end end From c47f80280c4a0518059b1cbc99751f722c324c84 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 27 May 2015 13:48:42 +0300 Subject: [PATCH 007/174] Update epp examples --- doc/epp-examples.md | 5309 ++++++++++++++++++++++++++++++------------- 1 file changed, 3696 insertions(+), 1613 deletions(-) diff --git a/doc/epp-examples.md b/doc/epp-examples.md index df906d509..4d7192332 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -1,6 +1,6 @@ # EPP REQUEST - RESPONSE EXAMPLES -GENERATED AT: 2015-04-02 12:30:35 +0300 -EXAMPLE COUNT: 125 +GENERATED AT: 2015-05-27 10:43:23 UTC +EXAMPLE COUNT: 159 --- @@ -42,10 +42,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1233952216 - + + ABC-12345 + ccReg-1585073425 + ``` @@ -96,11 +96,11 @@ RESPONSE: Required parameter missing: extension > extdata > ident [ident] + + ABC-12345 + ccReg-5715688008 + - - ABC-12345 - ccReg-3287526489 - ``` @@ -149,14 +149,14 @@ RESPONSE: - 8785c682 - 2015-04-02 09:30:37 UTC + FIRST0:34DF69A9 + 2015-05-27 10:43:25 UTC - - ABC-12345 - ccReg-2395064431 - + + ABC-12345 + ccReg-8051171569 + ``` @@ -206,14 +206,14 @@ RESPONSE: - 323ba226 - 2015-04-02 09:30:37 UTC + FIRST0:336265E0 + 2015-05-27 10:43:25 UTC - - ABC-12345 - ccReg-8997416744 - + + ABC-12345 + ccReg-5199925447 + ``` @@ -263,14 +263,14 @@ RESPONSE: - 391df6a8 - 2015-04-02 09:30:37 UTC + FIRST0:C852640B + 2015-05-27 10:43:25 UTC - - ABC-12345 - ccReg-7132910453 - + + ABC-12345 + ccReg-7518097746 + ``` @@ -320,19 +320,19 @@ RESPONSE: - 1eaf1950 - 2015-04-02 09:30:37 UTC + FIRST0:03344A72 + 2015-05-27 10:43:25 UTC - - ABC-12345 - ccReg-6618133267 - + + ABC-12345 + ccReg-3037699624 + ``` -### EPP Contact with valid user create command successfully saves custom code +### EPP Contact with valid user create command should add registrar prefix for code when missing REQUEST: @@ -353,7 +353,7 @@ REQUEST: +372.1234567 test@example.example - 12345 + abc12345 @@ -378,14 +378,414 @@ RESPONSE: - registrar1:12345 - 2015-04-02 09:30:37 UTC + FIRST0:ABC12345 + 2015-05-27 10:43:25 UTC - - ABC-12345 - ccReg-2453380772 - + + ABC-12345 + ccReg-2425066108 + + + +``` + +### EPP Contact with valid user create command should add registrar prefix for code when missing + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + abc:ABC:12345 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:ABC:ABC:12345 + 2015-05-27 10:43:25 UTC + + + + ABC-12345 + ccReg-9903302869 + + + +``` + +### EPP Contact with valid user create command should not allow spaces in custom code + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + abc 123 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + is invalid [code] + + + ABC-12345 + ccReg-2339768655 + + + +``` + +### EPP Contact with valid user create command should add registrar prefix for code when legacy prefix present + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + CID:FIRST0:abc:ABC:NEW:12345 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:CID:FIRST0:ABC:ABC:NEW:12345 + 2015-05-27 10:43:25 UTC + + + + ABC-12345 + ccReg-6869800314 + + + +``` + +### EPP Contact with valid user create command should not remove suffix CID + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + CID:FIRST0:abc:CID:ABC:NEW:12345 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:CID:FIRST0:ABC:CID:ABC:NEW:12345 + 2015-05-27 10:43:25 UTC + + + + ABC-12345 + ccReg-5110224581 + + + +``` + +### EPP Contact with valid user create command should not add registrar prefix for code when prefix present + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + FIRST0:abc22 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:ABC22 + 2015-05-27 10:43:25 UTC + + + + ABC-12345 + ccReg-3526845166 + + + +``` + +### EPP Contact with valid user create command should add registrar prefix for code does not match exactly to prefix + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + cid2:first0:abc:ABC:11111 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:CID2:FIRST0:ABC:ABC:11111 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-3943735784 + + + +``` + +### EPP Contact with valid user create command should ignore custom code when only contact prefix given + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + CID:FIRST0 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:CID:FIRST0 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-3812376837 + ``` @@ -436,14 +836,14 @@ RESPONSE: - 9a8b4708 - 2015-04-02 09:30:37 UTC + FIRST0:FCCE0C37 + 2015-05-27 10:43:26 UTC - - ABC-12345 - ccReg-8583394129 - + + ABC-12345 + ccReg-6490804956 + ``` @@ -493,14 +893,14 @@ RESPONSE: - 92af8b59 - 2015-04-02 09:30:37 UTC + FIRST0:1752FB11 + 2015-05-27 10:43:26 UTC - - ABC-12345 - ccReg-4962506701 - + + ABC-12345 + ccReg-4664789940 + ``` @@ -549,11 +949,11 @@ RESPONSE: Parameter value policy error. Org must be blank: postalInfo > org [org] + + ABC-12345 + ccReg-2217323355 + - - ABC-12345 - ccReg-9648398992 - ``` @@ -601,11 +1001,11 @@ RESPONSE: Parameter value policy error. Fax must be blank: fax [fax] + + ABC-12345 + ccReg-2596146301 + - - ABC-12345 - ccReg-5762592386 - ``` @@ -637,14 +1037,11 @@ RESPONSE: Required parameter missing: update > update > id [id] - - Required parameter missing: update > update > authInfo > pw [pw] - + + ABC-12345 + ccReg-5177160774 + - - ABC-12345 - ccReg-5502832054 - ``` @@ -695,14 +1092,14 @@ RESPONSE: Object does not exist - not-exists + NOT-EXISTS + + ABC-12345 + ccReg-1486161642 + - - ABC-12345 - ccReg-6358984822 - ``` @@ -716,7 +1113,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -755,19 +1152,65 @@ RESPONSE: - sh8013 - 2015-04-02 09:30:37 UTC + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC - - ABC-12345 - ccReg-9896533575 - + + ABC-12345 + ccReg-1514698242 + ``` -### EPP Contact with valid user update command fails with wrong authentication info +### EPP Contact with valid user update command is succesful for own contact without password + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + + John Doe Edited + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-0772549072 + + + +``` + +### EPP Contact with valid user update command should update other contact with correct password REQUEST: @@ -807,10 +1250,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7879674966 - + + ABC-12345 + ccReg-3877274588 + ``` @@ -823,7 +1266,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -857,14 +1300,20 @@ RESPONSE: - - Authorization error + + Command completed successfully + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-0346588044 + - - ABC-12345 - ccReg-9497399081 - ``` @@ -906,10 +1355,142 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-2756467450 - + + ABC-12345 + ccReg-1836171811 + + + +``` + +### EPP Contact with valid user update command should not update other contact without password + +REQUEST: + +```xml + + + + + registrar2 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-3673815346 + + + +``` + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + + John Doe Edited + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Authorization error + + + ABC-12345 + ccReg-0819879826 + + + +``` + +REQUEST: + +```xml + + + + + registrar1 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-3607963168 + ``` @@ -924,7 +1505,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -964,11 +1545,11 @@ RESPONSE: Email is invalid [email] + + ABC-12345 + ccReg-2845722155 + - - ABC-12345 - ccReg-0573724614 - ``` @@ -982,7 +1563,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -1020,14 +1601,14 @@ RESPONSE: Object does not exist - sh8013notpossibletoupdate + FIRST0:SH8013NOTPOSSIBLETOUPDATE + + ABC-12345 + ccReg-9111281614 + - - ABC-12345 - ccReg-8967980859 - ``` @@ -1041,7 +1622,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -1080,14 +1661,14 @@ RESPONSE: - sh8013 - 2015-04-02 09:30:37 UTC + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC - - ABC-12345 - ccReg-1289469541 - + + ABC-12345 + ccReg-5675773022 + ``` @@ -1102,7 +1683,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -1140,11 +1721,11 @@ RESPONSE: Parameter value policy error. Org must be blank: postalInfo > org [org] + + ABC-12345 + ccReg-5962790806 + - - ABC-12345 - ccReg-7130809324 - ``` @@ -1158,7 +1739,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 password @@ -1196,11 +1777,11 @@ RESPONSE: Parameter value policy error. Fax must be blank: fax [fax] + + ABC-12345 + ccReg-4675099884 + - - ABC-12345 - ccReg-9624548628 - ``` @@ -1214,7 +1795,7 @@ REQUEST: - sh8013 + FIRST0:SH8013 Payment overdue. @@ -1235,14 +1816,533 @@ RESPONSE: Parameter value policy error. Client-side object status management not supported: status [status] - - Required parameter missing: update > update > authInfo > pw [pw] - + + ABC-12345 + ccReg-1311892678 + + + +``` + +### EPP Contact with valid user update command should add value voice value + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + +372.11111111 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-5301697215 + + + +``` + +### EPP Contact with valid user update command should return error when add attributes phone value is empty + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + + + + + example@example.ee + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Required parameter missing - phone [phone] + + + Phone nr is invalid [phone] + + + ABC-12345 + ccReg-2304368720 + + + +``` + +### EPP Contact with valid user update command should honor chg value over add value when both changes same attribute + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + +372.2222222222222 + + + +372.11111111111 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-5525783094 + + + +``` + +### EPP Contact with valid user update command should not allow to remove required voice attribute + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + +372.7654321 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Required parameter missing - phone [phone] + + + Phone nr is invalid [phone] + + + ABC-12345 + ccReg-5500267943 + + + +``` + +### EPP Contact with valid user update command should not allow to remove required attribute + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + +372.7654321 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Required parameter missing - phone [phone] + + + Phone nr is invalid [phone] + + + ABC-12345 + ccReg-0108854211 + + + +``` + +### EPP Contact with valid user update command should honor add over rem + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + not important + + + +372.3333333 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-7179239442 + + + +``` + +### EPP Contact with valid user update command should honor chg over rem + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + not important + + + +372.44444444 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-6722651709 + + + +``` + +### EPP Contact with valid user update command should honor chg over rem and add + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + +372.666666 + + + +372.555555 + + + not important + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-3206173115 + + + +``` + +### EPP Contact with valid user update command should not remove password + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + + password + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:SH8013 + 2015-05-27 10:43:26 UTC + + + + ABC-12345 + ccReg-6097209925 + + + +``` + +### EPP Contact with valid user update command should return general policy error when removing org + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + + not important + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Parameter value policy error. Org must be blank: postalInfo > org [org] + + + ABC-12345 + ccReg-0081608878 + + + +``` + +### EPP Contact with valid user update command should return error when removing street + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + password + + + + not important + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Required parameter missing - name [name] + + + ABC-12345 + ccReg-8929861116 + - - ABC-12345 - ccReg-7975112656 - ``` @@ -1271,14 +2371,11 @@ RESPONSE: Required parameter missing: delete > delete > id [id] - - Required parameter missing: delete > delete > authInfo > pw [pw] - + + ABC-12345 + ccReg-4224986078 + - - ABC-12345 - ccReg-4876546115 - ``` @@ -1318,14 +2415,14 @@ RESPONSE: Object does not exist - not-exists + NOT-EXISTS + + ABC-12345 + ccReg-6695799151 + - - ABC-12345 - ccReg-6707134195 - ``` @@ -1339,7 +2436,7 @@ REQUEST: - sh616871733 + FIRST0:SH002595873 password @@ -1365,10 +2462,89 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-0769582785 - + + ABC-12345 + ccReg-9877498133 + + + +``` + +### EPP Contact with valid user delete command deletes own contact even with wrong password + +REQUEST: + +```xml + + + + + + FIRST0:SH085363854 + + wrong password + + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-2124046501 + + + +``` + +### EPP Contact with valid user delete command deletes own contact even without password + +REQUEST: + +```xml + + + + + + FIRST0:SH588117405 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-1641432006 + ``` @@ -1383,7 +2559,7 @@ REQUEST: - sh317872324 + FIRST0:SH462986476 password @@ -1409,15 +2585,15 @@ RESPONSE: Object association prohibits operation [domains] + + ABC-12345 + ccReg-6733472504 + - - ABC-12345 - ccReg-9622128674 - ``` -### EPP Contact with valid user delete command fails with wrong authentication info +### EPP Contact with valid user delete command should delete when not owner but with correct password REQUEST: @@ -1457,10 +2633,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9519410809 - + + ABC-12345 + ccReg-9593963234 + ``` @@ -1473,7 +2649,7 @@ REQUEST: - sh849994836 + FIRST0:SH345866719 password @@ -1496,14 +2672,14 @@ RESPONSE: - - Authorization error + + Command completed successfully + + ABC-12345 + ccReg-4321232367 + - - ABC-12345 - ccReg-6470384730 - ``` @@ -1545,10 +2721,271 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-2702175300 - + + ABC-12345 + ccReg-9943668816 + + + +``` + +### EPP Contact with valid user delete command should not delete when not owner without password + +REQUEST: + +```xml + + + + + registrar2 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-4143129224 + + + +``` + +REQUEST: + +```xml + + + + + + FIRST0:SH1376434210 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Authorization error + + + ABC-12345 + ccReg-2155291311 + + + +``` + +REQUEST: + +```xml + + + + + registrar1 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-4451657543 + + + +``` + +### EPP Contact with valid user delete command should not delete when not owner with wrong password + +REQUEST: + +```xml + + + + + registrar2 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-5071844006 + + + +``` + +REQUEST: + +```xml + + + + + + FIRST0:SH3882613511 + wrong password + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Authorization error + + + ABC-12345 + ccReg-6382118387 + + + +``` + +REQUEST: + +```xml + + + + + registrar1 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-0221108510 + ``` @@ -1578,11 +3015,11 @@ RESPONSE: Required parameter missing: check > check > id [id] + + ABC-12345 + ccReg-1250931582 + - - ABC-12345 - ccReg-9548831820 - ``` @@ -1596,7 +3033,7 @@ REQUEST: - check-1234 + FIXED:CHECK-1234 check-4321 @@ -1617,7 +3054,7 @@ RESPONSE: - check-1234 + FIXED:CHECK-1234 in use @@ -1625,10 +3062,57 @@ RESPONSE: - - ABC-12345 - ccReg-4583380937 - + + ABC-12345 + ccReg-5446739255 + + + +``` + +### EPP Contact with valid user check command should support legacy CID farmat + +REQUEST: + +```xml + + + + + + FIXED:CHECK-LEGACY + CID:FIXED:CHECK-LEGACY + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + + FIXED:CHECK-LEGACY + in use + + + CID:FIXED:CHECK-LEGACY + + + + + ABC-12345 + ccReg-2438715118 + ``` @@ -1658,11 +3142,11 @@ RESPONSE: Required parameter missing: info > info > id [id] + + ABC-12345 + ccReg-8371968302 + - - ABC-12345 - ccReg-0827476737 - ``` @@ -1696,14 +3180,14 @@ RESPONSE: Object does not exist - no-contact + NO-CONTACT + + ABC-12345 + ccReg-3188555074 + - - ABC-12345 - ccReg-7078773469 - ``` @@ -1717,7 +3201,7 @@ REQUEST: - info-4444 + FIXED:INFO-4444 password @@ -1739,9 +3223,9 @@ RESPONSE: - info-4444 + FIXED:INFO-4444 +372.12345678 - otilia@trompmetz.info + llewellyn@bernier.org Johnny Awesome @@ -1752,9 +3236,9 @@ RESPONSE: EE - registrar1 + fixed registrar - 2015-04-02 09:30:38 UTC + 2015-05-27 10:43:29 UTC password @@ -1766,10 +3250,77 @@ RESPONSE: 37605030299 - - ABC-12345 - ccReg-6410502093 - + + ABC-12345 + ccReg-2762164451 + + + +``` + +### EPP Contact with valid user info command should add legacy CID format as append + +REQUEST: + +```xml + + + + + + FIXED:CID:FIXED:INFO-5555 + + password + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIXED:CID:FIXED:INFO-5555 + +372.12345678 + llewellyn@bernier.org + + Johnny Awesome + + Short street 11 + Tallinn + 11111 + + EE + + + fixed registrar + + 2015-05-27 10:43:29 UTC + + password + + + + + + + 37605030299 + + + + ABC-12345 + ccReg-5753089221 + ``` @@ -1784,7 +3335,7 @@ REQUEST: - info-ident + FIRST0:INFO-IDENT password @@ -1806,9 +3357,9 @@ RESPONSE: - info-ident + FIRST0:INFO-IDENT +372.12345678 - otilia@trompmetz.info + llewellyn@bernier.org Johnny Awesome @@ -1821,7 +3372,7 @@ RESPONSE: registrar1 - 2015-04-02 09:30:38 UTC + 2015-05-27 10:43:29 UTC password @@ -1833,15 +3384,15 @@ RESPONSE: 37605030299 - - ABC-12345 - ccReg-6975719991 - + + ABC-12345 + ccReg-0873990421 + ``` -### EPP Contact with valid user info command returns no authorization error for wrong password when owner +### EPP Contact with valid user info command returns no authorization error for wrong password when registrant REQUEST: @@ -1851,7 +3402,7 @@ REQUEST: - sh191232150 + FIRST0:SH762612490 wrong-pw @@ -1873,11 +3424,11 @@ RESPONSE: - sh191232150 + FIRST0:SH762612490 +372.12345678 - otilia@trompmetz.info + llewellyn@bernier.org - Khalil Ernser0 + Liliana Crist II0 Short street 11 Tallinn @@ -1888,7 +3439,7 @@ RESPONSE: registrar1 - 2015-04-02 09:30:36 UTC + 2015-05-27 10:43:24 UTC password @@ -1900,10 +3451,77 @@ RESPONSE: 37605030299 - - ABC-12345 - ccReg-4705338516 - + + ABC-12345 + ccReg-8366914454 + + + +``` + +### EPP Contact with valid user info command should honor new contact code format + +REQUEST: + +```xml + + + + + + FIXED:TEST:CUSTOM:CODE + + password + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIXED:TEST:CUSTOM:CODE + +372.12345678 + llewellyn@bernier.org + + Mrs. Willard Kling15 + + Short street 11 + Tallinn + 11111 + + EE + + + fixed registrar + + 2015-05-27 10:43:29 UTC + + password + + + + + + + 37605030299 + + + + ABC-12345 + ccReg-1094860403 + ``` @@ -1948,10 +3566,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-2244559397 - + + ABC-12345 + ccReg-1156272733 + ``` @@ -1964,7 +3582,7 @@ REQUEST: - sh191232150 + FIRST0:SH762612490 password @@ -1986,11 +3604,11 @@ RESPONSE: - sh191232150 + FIRST0:SH762612490 +372.12345678 - otilia@trompmetz.info + llewellyn@bernier.org - Khalil Ernser0 + Liliana Crist II0 Short street 11 Tallinn @@ -2001,7 +3619,7 @@ RESPONSE: registrar1 - 2015-04-02 09:30:36 UTC + 2015-05-27 10:43:24 UTC password @@ -2013,10 +3631,10 @@ RESPONSE: 37605030299 - - ABC-12345 - ccReg-7930412610 - + + ABC-12345 + ccReg-8181550058 + ``` @@ -2059,10 +3677,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-3033397293 - + + ABC-12345 + ccReg-6586282287 + ``` @@ -2107,10 +3725,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-2110451392 - + + ABC-12345 + ccReg-2861885021 + ``` @@ -2123,7 +3741,7 @@ REQUEST: - sh191232150 + FIRST0:SH762612490 wrong-pw @@ -2143,11 +3761,11 @@ RESPONSE: Authorization error + + ABC-12345 + ccReg-0042572211 + - - ABC-12345 - ccReg-6034273022 - ``` @@ -2189,10 +3807,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6728126220 - + + ABC-12345 + ccReg-4742331049 + ``` @@ -2237,10 +3855,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9479746307 - + + ABC-12345 + ccReg-6748839643 + ``` @@ -2253,7 +3871,7 @@ REQUEST: - sh191232150 + FIRST0:SH762612490 @@ -2275,20 +3893,20 @@ RESPONSE: - sh191232150 + FIRST0:SH762612490 - Khalil Ernser0 + Liliana Crist II0 registrar1 - 2015-04-02 09:30:36 UTC + 2015-05-27 10:43:24 UTC - - ABC-12345 - ccReg-9878707653 - + + ABC-12345 + ccReg-8839721470 + ``` @@ -2331,10 +3949,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-8394470155 - + + ABC-12345 + ccReg-0850650289 + ``` @@ -2369,11 +3987,11 @@ RESPONSE: Unimplemented command + + ABC-12345 + ccReg-8524752910 + - - ABC-12345 - ccReg-4449817183 - ``` @@ -2415,10 +4033,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6479345571 - + + ABC-12345 + ccReg-5841042302 + ``` @@ -2433,7 +4051,7 @@ REQUEST: - example29991941952598574.ee + example70096036052024755.ee 1 @@ -2445,8 +4063,8 @@ REQUEST: ns2.example.net - citizen_1234 - citizen_1234 + FIXED:CITIZEN_1234 + FIXED:CITIZEN_1234 sh1111 sh2222 @@ -2487,11 +4105,11 @@ RESPONSE: sh2222 + + ABC-12345 + ccReg-6329567919 + - - ABC-12345 - ccReg-9003154174 - ``` @@ -2531,15 +4149,15 @@ RESPONSE: Required parameter missing: extension > extdata > legalDocument [legal_document] + + ABC-12345 + ccReg-1727549112 + - - ABC-12345 - ccReg-3507870669 - ``` -### EPP Domain with citizen as an owner creates a domain +### EPP Domain with citizen as a registrant creates a domain REQUEST: @@ -2549,7 +4167,7 @@ REQUEST: - example69986438078627922.ee + example18875779892898751.ee 1 @@ -2561,10 +4179,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -2596,20 +4214,20 @@ RESPONSE: - example69986438078627922.ee - 2015-04-02 09:30:39 UTC - 2016-04-02 00:00:00 UTC + example18875779892898751.ee + 2015-05-27 10:43:30 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-7138232020 + - - ABC-12345 - ccReg-1862475581 - ``` -### EPP Domain with citizen as an owner creates a domain with legal document +### EPP Domain with citizen as a registrant creates a domain with legal document REQUEST: @@ -2619,7 +4237,7 @@ REQUEST: - example47860272766685766.ee + example16518501250481074.ee 1 @@ -2631,10 +4249,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -2658,20 +4276,20 @@ RESPONSE: - example47860272766685766.ee - 2015-04-02 09:30:39 UTC - 2016-04-02 00:00:00 UTC + example16518501250481074.ee + 2015-05-27 10:43:30 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-6949714810 + - - ABC-12345 - ccReg-9791125228 - ``` -### EPP Domain with citizen as an owner validates nameserver ipv4 when in same zone as domain +### EPP Domain with citizen as a registrant validates nameserver ipv4 when in same zone as domain REQUEST: @@ -2681,20 +4299,20 @@ REQUEST: - example65969542925515313.ee + example34657545915229578.ee 1 - ns1.example65969542925515313.ee + ns1.example34657545915229578.ee - ns2.example65969542925515313.ee + ns2.example34657545915229578.ee - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -2724,15 +4342,15 @@ RESPONSE: IPv4 is missing [ipv4] + + ABC-12345 + ccReg-3705921440 + - - ABC-12345 - ccReg-3337898568 - ``` -### EPP Domain with citizen as an owner does not create reserved domain +### EPP Domain with citizen as a registrant does not create reserved domain REQUEST: @@ -2754,10 +4372,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -2790,15 +4408,15 @@ RESPONSE: 1162.ee + + ABC-12345 + ccReg-3665167833 + - - ABC-12345 - ccReg-8534003724 - ``` -### EPP Domain with citizen as an owner does not create domain without contacts and registrant +### EPP Domain with citizen as a registrant does not create domain without contacts and registrant REQUEST: @@ -2808,7 +4426,7 @@ REQUEST: - example61321583015887262.ee + example95948665035556904.ee 1 @@ -2820,9 +4438,9 @@ REQUEST: ns2.example.net - sh8013 - sh8013 - sh801333 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -2853,15 +4471,15 @@ RESPONSE: Required parameter missing: create > create > registrant [registrant] + + ABC-12345 + ccReg-2552697936 + - - ABC-12345 - ccReg-1067001064 - ``` -### EPP Domain with citizen as an owner does not create domain without nameservers +### EPP Domain with citizen as a registrant does not create domain without nameservers REQUEST: @@ -2871,13 +4489,13 @@ REQUEST: - example31779613815936591.ee + example48967884144781787.ee 1 - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -2910,15 +4528,15 @@ RESPONSE: Required parameter missing: create > create > ns > hostAttr [host_attr] + + ABC-12345 + ccReg-9940643139 + - - ABC-12345 - ccReg-6148309271 - ``` -### EPP Domain with citizen as an owner does not create domain with too many nameservers +### EPP Domain with citizen as a registrant does not create domain with too many nameservers REQUEST: @@ -2928,7 +4546,7 @@ REQUEST: - example70843109875439590.ee + example26199879111999630.ee 1 @@ -2974,10 +4592,10 @@ REQUEST: ns13.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3007,15 +4625,15 @@ RESPONSE: Nameservers count must be between 2-11 [nameservers] + + ABC-12345 + ccReg-9523508089 + - - ABC-12345 - ccReg-0854842404 - ``` -### EPP Domain with citizen as an owner returns error when invalid nameservers are present +### EPP Domain with citizen as a registrant returns error when invalid nameservers are present REQUEST: @@ -3025,7 +4643,7 @@ REQUEST: - example63972387399181910.ee + example67443327025915260.ee 1 @@ -3035,10 +4653,10 @@ REQUEST: -invalid2 - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3077,15 +4695,15 @@ RESPONSE: -invalid2 + + ABC-12345 + ccReg-1674811016 + - - ABC-12345 - ccReg-4558439165 - ``` -### EPP Domain with citizen as an owner checks hostAttr presence +### EPP Domain with citizen as a registrant checks hostAttr presence REQUEST: @@ -3095,16 +4713,16 @@ REQUEST: - example64998887953122208.ee + example4862326639681440.ee 1 ns1.example.ee ns2.example.ee - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3134,15 +4752,15 @@ RESPONSE: Required parameter missing: create > create > ns > hostAttr [host_attr] + + ABC-12345 + ccReg-0201147447 + - - ABC-12345 - ccReg-8993773766 - ``` -### EPP Domain with citizen as an owner creates domain with nameservers with ips +### EPP Domain with citizen as a registrant creates domain with nameservers with ips REQUEST: @@ -3152,7 +4770,7 @@ REQUEST: - example66094690867566868.ee + example67163358337402331.ee 1 @@ -3164,10 +4782,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 2fooBAR @@ -3194,20 +4812,20 @@ RESPONSE: - example66094690867566868.ee - 2015-04-02 09:30:40 UTC - 2016-04-02 00:00:00 UTC + example67163358337402331.ee + 2015-05-27 10:43:31 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-8005178303 + - - ABC-12345 - ccReg-8694496624 - ``` -### EPP Domain with citizen as an owner returns error when nameserver has invalid ips +### EPP Domain with citizen as a registrant returns error when nameserver has invalid ips REQUEST: @@ -3217,7 +4835,7 @@ REQUEST: - example74143344678584894.ee + example83921540659724800.ee 1 @@ -3229,10 +4847,10 @@ REQUEST: invalid_ipv6 - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 2fooBAR @@ -3266,15 +4884,15 @@ RESPONSE: INVALID_IPV6 + + ABC-12345 + ccReg-0480672774 + - - ABC-12345 - ccReg-4896771251 - ``` -### EPP Domain with citizen as an owner creates a domain with period in days +### EPP Domain with citizen as a registrant creates a domain with period in days REQUEST: @@ -3284,7 +4902,7 @@ REQUEST: - example68910576882568383.ee + example31168439878572805.ee 1 @@ -3296,10 +4914,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3331,20 +4949,20 @@ RESPONSE: - example68910576882568383.ee - 2015-04-02 09:30:40 UTC - 2016-04-02 00:00:00 UTC + example31168439878572805.ee + 2015-05-27 10:43:31 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-0710914199 + - - ABC-12345 - ccReg-8254662407 - ``` -### EPP Domain with citizen as an owner does not create a domain with invalid period +### EPP Domain with citizen as a registrant does not create a domain with invalid period REQUEST: @@ -3354,7 +4972,7 @@ REQUEST: - example49512361195062727.ee + example91174490590886314.ee 367 @@ -3366,10 +4984,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3402,15 +5020,15 @@ RESPONSE: 367 + + ABC-12345 + ccReg-2677386716 + - - ABC-12345 - ccReg-1464107209 - ``` -### EPP Domain with citizen as an owner creates a domain with multiple dnskeys +### EPP Domain with citizen as a registrant creates a domain with multiple dnskeys REQUEST: @@ -3420,7 +5038,7 @@ REQUEST: - example5422433521677756.ee + example91267215976498865.ee 1 @@ -3432,10 +5050,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3479,20 +5097,20 @@ RESPONSE: - example5422433521677756.ee - 2015-04-02 09:30:40 UTC - 2016-04-02 00:00:00 UTC + example91267215976498865.ee + 2015-05-27 10:43:31 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-6086717774 + - - ABC-12345 - ccReg-3904270163 - ``` -### EPP Domain with citizen as an owner does not create a domain when dnskeys are invalid +### EPP Domain with citizen as a registrant does not create a domain when dnskeys are invalid REQUEST: @@ -3502,7 +5120,7 @@ REQUEST: - example69912340093826806.ee + example45325893459192952.ee 1 @@ -3514,10 +5132,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3595,15 +5213,15 @@ RESPONSE: 5 + + ABC-12345 + ccReg-8175538906 + - - ABC-12345 - ccReg-9441960354 - ``` -### EPP Domain with citizen as an owner does not create a domain with two identical dnskeys +### EPP Domain with citizen as a registrant does not create a domain with two identical dnskeys REQUEST: @@ -3613,7 +5231,7 @@ REQUEST: - example65131165697692498.ee + example15916927116711123.ee 1 @@ -3625,10 +5243,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3667,15 +5285,15 @@ RESPONSE: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + ABC-12345 + ccReg-9219211054 + - - ABC-12345 - ccReg-6791307481 - ``` -### EPP Domain with citizen as an owner validated dnskeys count +### EPP Domain with citizen as a registrant validated dnskeys count REQUEST: @@ -3685,7 +5303,7 @@ REQUEST: - example45831056679599713.ee + example91454458242964658.ee 1 @@ -3697,10 +5315,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3736,15 +5354,15 @@ RESPONSE: DNS keys count must be between 0-1 [dnskeys] + + ABC-12345 + ccReg-9548686640 + - - ABC-12345 - ccReg-7825718946 - ``` -### EPP Domain with citizen as an owner creates domain with ds data +### EPP Domain with citizen as a registrant creates domain with ds data REQUEST: @@ -3754,7 +5372,7 @@ REQUEST: - example37215299046398843.ee + example71491564741929352.ee 1 @@ -3766,10 +5384,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3801,20 +5419,20 @@ RESPONSE: - example37215299046398843.ee - 2015-04-02 09:30:41 UTC - 2016-04-02 00:00:00 UTC + example71491564741929352.ee + 2015-05-27 10:43:32 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-4235232567 + - - ABC-12345 - ccReg-7095694178 - ``` -### EPP Domain with citizen as an owner creates domain with ds data with key +### EPP Domain with citizen as a registrant creates domain with ds data with key REQUEST: @@ -3824,7 +5442,7 @@ REQUEST: - example67486651509736417.ee + example30406577928067538.ee 1 @@ -3836,10 +5454,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3877,20 +5495,20 @@ RESPONSE: - example67486651509736417.ee - 2015-04-02 09:30:41 UTC - 2016-04-02 00:00:00 UTC + example30406577928067538.ee + 2015-05-27 10:43:32 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-7688480402 + - - ABC-12345 - ccReg-6068198686 - ``` -### EPP Domain with citizen as an owner prohibits dsData +### EPP Domain with citizen as a registrant prohibits dsData REQUEST: @@ -3900,7 +5518,7 @@ REQUEST: - example58465853895457101.ee + example63040009625343060.ee 1 @@ -3912,10 +5530,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -3951,15 +5569,15 @@ RESPONSE: dsData object is not allowed + + ABC-12345 + ccReg-5582933815 + - - ABC-12345 - ccReg-6174712138 - ``` -### EPP Domain with citizen as an owner prohibits keyData +### EPP Domain with citizen as a registrant prohibits keyData REQUEST: @@ -3969,7 +5587,7 @@ REQUEST: - example97193404282661106.ee + example73287430336373315.ee 1 @@ -3981,10 +5599,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -4014,15 +5632,15 @@ RESPONSE: keyData object is not allowed + + ABC-12345 + ccReg-4249180668 + - - ABC-12345 - ccReg-2738595388 - ``` -### EPP Domain with citizen as an owner prohibits dsData and keyData when they exists together +### EPP Domain with citizen as a registrant prohibits dsData and keyData when they exists together REQUEST: @@ -4032,7 +5650,7 @@ REQUEST: - example8349587703882463.ee + example12685922679382848.ee 1 @@ -4044,10 +5662,10 @@ REQUEST: ns2.example.net - citizen_1234 - sh8013 - sh8013 - sh801333 + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 @@ -4083,15 +5701,15 @@ RESPONSE: Mutually exclusive parameters: extension > create > keyData, extension > create > dsData + + ABC-12345 + ccReg-3972247485 + - - ABC-12345 - ccReg-3820228900 - ``` -### EPP Domain with juridical persion as an owner creates a domain with contacts +### EPP Domain with juridical persion as a registrant creates a domain with contacts REQUEST: @@ -4101,7 +5719,7 @@ REQUEST: - example11522860072959556.ee + example31407412492547028.ee 1 @@ -4113,8 +5731,8 @@ REQUEST: ns2.example.net - juridical_1234 - sh8013 + FIXED:JURIDICAL_1234 + FIXED:SH8013 @@ -4146,20 +5764,20 @@ RESPONSE: - example11522860072959556.ee - 2015-04-02 09:30:41 UTC - 2016-04-02 00:00:00 UTC + example31407412492547028.ee + 2015-05-27 10:43:32 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-4939043794 + - - ABC-12345 - ccReg-7422719300 - ``` -### EPP Domain with juridical persion as an owner does not create a domain without admin contact +### EPP Domain with juridical persion as a registrant does not create a domain without admin contact REQUEST: @@ -4169,7 +5787,7 @@ REQUEST: - example4597088465974685.ee + example43179409594610423.ee 1 @@ -4181,8 +5799,8 @@ REQUEST: ns2.example.net - juridical_1234 - sh8013 + FIXED:JURIDICAL_1234 + FIXED:SH8013 @@ -4212,15 +5830,15 @@ RESPONSE: Admin contacts count must be between 1-10 [admin_domain_contacts] + + ABC-12345 + ccReg-9685299222 + - - ABC-12345 - ccReg-1845021908 - ``` -### EPP Domain with juridical persion as an owner cannot assign juridical person as admin contact +### EPP Domain with juridical persion as a registrant cannot assign juridical person as admin contact REQUEST: @@ -4230,7 +5848,7 @@ REQUEST: - example42791140549073590.ee + example11348446936077523.ee 1 @@ -4242,8 +5860,8 @@ REQUEST: ns2.example.net - juridical_1234 - juridical_1234 + FIXED:JURIDICAL_1234 + FIXED:JURIDICAL_1234 @@ -4273,14 +5891,14 @@ RESPONSE: Admin contact can be private person only - juridical_1234 + FIXED:JURIDICAL_1234 + + ABC-12345 + ccReg-4691511606 + - - ABC-12345 - ccReg-9414004240 - ``` @@ -4324,10 +5942,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7857345433 - + + ABC-12345 + ccReg-0917111585 + ``` @@ -4342,7 +5960,7 @@ REQUEST: domain1.ee - 6dfc702c9b9f4a4935eddd44e8a9357f + 7e6a4a98534e2582634758ca77ee7148 @@ -4369,18 +5987,18 @@ RESPONSE: domain1.ee serverApproved - 222 - 2015-04-02 09:30:42 UTC - 111 - 2015-04-02 09:30:42 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:32 UTC + REGDOMAIN1 + 2015-05-27 10:43:32 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-3335421781 + - - ABC-12345 - ccReg-8712491017 - ``` @@ -4422,160 +6040,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1010222202 - - - -``` - -REQUEST: - -```xml - - - - - - domain1.ee - - a1b720f933d963ad93a12169f646de29 - - - - - - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain1.ee - pending - 111 - 2015-04-02 09:30:42 UTC - 222 - 2015-04-02 10:30:42 UTC - 2016-04-02 00:00:00 UTC - - - - - ABC-12345 - ccReg-5304388039 - - -``` - -REQUEST: - -```xml - - - - - - domain1.ee - - a1b720f933d963ad93a12169f646de29 - - - - - - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain1.ee - pending - 111 - 2015-04-02 09:30:42 UTC - 222 - 2015-04-02 10:30:42 UTC - 2016-04-02 00:00:00 UTC - - - - - ABC-12345 - ccReg-6275383342 - - -``` - -REQUEST: - -```xml - - - - - registrar2 - ghyt9e4fu - - 1.0 - en - - - urn:ietf:params:xml:ns:domain-1.0 - urn:ietf:params:xml:ns:contact-1.0 - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - urn:ee:eis:xml:epp:eis-1.0 - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-5159106216 - + + ABC-12345 + ccReg-6267499339 + ``` @@ -4602,24 +6070,24 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-04-02 09:30:42 UTC - Transfer requested. + 2015-05-27 10:43:33 UTC + Domain transfer was approved, associated contacts are: ["REGDOMAIN2:2C52859D", "REGDOMAIN2:A464BC75"] domain1.ee - pending - 111 - 2015-04-02 09:30:42 UTC - 222 - 2015-04-02 10:30:42 UTC - 2016-04-02 00:00:00 UTC + serverApproved + REGDOMAIN2 + 2015-05-27 10:43:32 UTC + REGDOMAIN1 + 2015-05-27 10:43:32 UTC + 2016-05-27 00:00:00 UTC - - ABC-12345 - ccReg-1613521643 - + + ABC-12345 + ccReg-9254728904 + ``` @@ -4630,24 +6098,19 @@ REQUEST: - - registrar1 - ghyt9e4fu - - 1.0 - en - - - urn:ietf:params:xml:ns:domain-1.0 - urn:ietf:params:xml:ns:contact-1.0 - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - urn:ee:eis:xml:epp:eis-1.0 - - - + + + domain1.ee + + 055ee8bb38b32b97e378132ff3ca916c + + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + ABC-12345 @@ -4662,10 +6125,73 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-5553786927 - + + + domain1.ee + pending + REGDOMAIN1 + 2015-05-27 10:43:33 UTC + REGDOMAIN2 + 2015-05-27 11:43:33 UTC + 2016-05-27 00:00:00 UTC + + + + ABC-12345 + ccReg-0275538941 + + + +``` + +REQUEST: + +```xml + + + + + + domain1.ee + + 055ee8bb38b32b97e378132ff3ca916c + + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain1.ee + pending + REGDOMAIN1 + 2015-05-27 10:43:33 UTC + REGDOMAIN2 + 2015-05-27 11:43:33 UTC + 2016-05-27 00:00:00 UTC + + + + ABC-12345 + ccReg-0757752457 + ``` @@ -4708,10 +6234,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9831901646 - + + ABC-12345 + ccReg-7935547078 + ``` @@ -4722,7 +6248,7 @@ REQUEST: - + ABC-12345 @@ -4734,14 +6260,28 @@ RESPONSE: - - Command completed successfully + + Command completed successfully; ack to dequeue - - - ABC-12345 - ccReg-2894235467 - + + 2015-05-27 10:43:33 UTC + Transfer requested. + + + + domain1.ee + pending + REGDOMAIN1 + 2015-05-27 10:43:33 UTC + REGDOMAIN2 + 2015-05-27 11:43:33 UTC + 2016-05-27 00:00:00 UTC + + + + ABC-12345 + ccReg-9141426728 + ``` @@ -4784,10 +6324,132 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4269600320 - + + ABC-12345 + ccReg-6011620786 + + + +``` + +REQUEST: + +```xml + + + + + registrar2 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-3668445992 + + + +``` + +REQUEST: + +```xml + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + ABC-12345 + ccReg-3613917922 + + + +``` + +REQUEST: + +```xml + + + + + registrar1 + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-0925120539 + ``` @@ -4832,10 +6494,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-3699819070 - + + ABC-12345 + ccReg-6028794756 + ``` @@ -4850,7 +6512,7 @@ REQUEST: domain2.ee - 357355fa4e0739928775457accc59549 + a3507d8fe60d7b06de6fa7ee3b7a11ad @@ -4877,18 +6539,18 @@ RESPONSE: domain2.ee pending - 222 - 2015-04-02 09:30:43 UTC - 111 - 2015-04-02 10:30:43 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:34 UTC + REGDOMAIN1 + 2015-05-27 11:43:34 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-7730469220 + - - ABC-12345 - ccReg-5521355427 - ``` @@ -4930,10 +6592,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4791283018 - + + ABC-12345 + ccReg-9035579043 + ``` @@ -4976,10 +6638,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6191445057 - + + ABC-12345 + ccReg-4920254507 + ``` @@ -4994,7 +6656,7 @@ REQUEST: domain2.ee - 357355fa4e0739928775457accc59549 + a3507d8fe60d7b06de6fa7ee3b7a11ad @@ -5021,18 +6683,18 @@ RESPONSE: domain2.ee pending - 222 - 2015-04-02 09:30:43 UTC - 111 - 2015-04-02 10:30:43 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:34 UTC + REGDOMAIN1 + 2015-05-27 11:43:34 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-5694613676 + - - ABC-12345 - ccReg-2972123016 - ``` @@ -5074,10 +6736,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6161338274 - + + ABC-12345 + ccReg-5785816065 + ``` @@ -5122,10 +6784,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9870720384 - + + ABC-12345 + ccReg-7366349974 + ``` @@ -5140,7 +6802,7 @@ REQUEST: domain3.ee - fd41d26f8400b0cacfec33b018795c90 + a0b72c9e75ef63d04bb9ad8715ca48fc @@ -5162,18 +6824,18 @@ RESPONSE: domain3.ee serverApproved - 222 - 2015-04-02 09:30:43 UTC - 111 - 2015-04-02 09:30:43 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:34 UTC + REGDOMAIN1 + 2015-05-27 10:43:34 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-6246328390 + - - ABC-12345 - ccReg-0598613440 - ``` @@ -5215,10 +6877,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-0655089715 - + + ABC-12345 + ccReg-0391926934 + ``` @@ -5263,10 +6925,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1498176471 - + + ABC-12345 + ccReg-7912772234 + ``` @@ -5281,7 +6943,7 @@ REQUEST: domain4.ee - 469c52225809cea1b5ab5f269b8f0345 + b083517b9f3a926e61702411cdf0c7be @@ -5303,18 +6965,18 @@ RESPONSE: domain4.ee serverApproved - 222 - 2015-04-02 09:30:43 UTC - 111 - 2015-04-02 09:30:43 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:34 UTC + REGDOMAIN1 + 2015-05-27 10:43:35 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-2452237245 + - - ABC-12345 - ccReg-5410410789 - ``` @@ -5356,10 +7018,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6342683850 - + + ABC-12345 + ccReg-5853115117 + ``` @@ -5404,10 +7066,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-8777764252 - + + ABC-12345 + ccReg-7994647230 + ``` @@ -5422,7 +7084,7 @@ REQUEST: domain5.ee - 57127a78f868cc7105550c99f02f5125 + c6ac11f0a30b90e2435872b947f676bc @@ -5444,18 +7106,18 @@ RESPONSE: domain5.ee serverApproved - 222 - 2015-04-02 09:30:44 UTC - 111 - 2015-04-02 09:30:44 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:35 UTC + REGDOMAIN1 + 2015-05-27 10:43:35 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-8456401947 + - - ABC-12345 - ccReg-3717942382 - ``` @@ -5497,10 +7159,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7884334910 - + + ABC-12345 + ccReg-0451125168 + ``` @@ -5545,10 +7207,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-5998762450 - + + ABC-12345 + ccReg-9996143631 + ``` @@ -5563,7 +7225,7 @@ REQUEST: domain8.ee - 239f7120741566851be43ff27d8098b3 + 15c978c4fdb8c7c8b320ff836238ff24 @@ -5585,18 +7247,18 @@ RESPONSE: domain8.ee serverApproved - 222 - 2015-04-02 09:30:44 UTC - 111 - 2015-04-02 09:30:44 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:36 UTC + REGDOMAIN1 + 2015-05-27 10:43:36 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-6547163770 + - - ABC-12345 - ccReg-9877768476 - ``` @@ -5638,10 +7300,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4014504567 - + + ABC-12345 + ccReg-8938696546 + ``` @@ -5686,10 +7348,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1519903345 - + + ABC-12345 + ccReg-1935599554 + ``` @@ -5704,7 +7366,7 @@ REQUEST: domain9.ee - 8c05b1875ad30ff1ec29cb184ca02595 + 99e7f00907374d57c7152d5a4cf6306c @@ -5726,18 +7388,18 @@ RESPONSE: domain9.ee serverApproved - 222 - 2015-04-02 09:30:45 UTC - 111 - 2015-04-02 09:30:45 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:36 UTC + REGDOMAIN1 + 2015-05-27 10:43:36 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-6108438709 + - - ABC-12345 - ccReg-6035084608 - ``` @@ -5779,10 +7441,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4665648420 - + + ABC-12345 + ccReg-7842682602 + ``` @@ -5827,10 +7489,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-0827534026 - + + ABC-12345 + ccReg-7725230435 + ``` @@ -5845,7 +7507,7 @@ REQUEST: domain11.ee - 26f350f364ef045477ce75fac2489dee + 02c630c0d9e223719ccd33c01a93a81c @@ -5867,18 +7529,18 @@ RESPONSE: domain11.ee serverApproved - 222 - 2015-04-02 09:30:45 UTC - 111 - 2015-04-02 09:30:45 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:37 UTC + REGDOMAIN1 + 2015-05-27 10:43:37 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-0988527962 + - - ABC-12345 - ccReg-2312727567 - ``` @@ -5920,15 +7582,15 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-2631195876 - + + ABC-12345 + ccReg-1153070739 + ``` -### EPP Domain with valid domain transfers domain and references exsisting owner contact to domain contacts +### EPP Domain with valid domain transfers domain and references exsisting registrant to domain contacts REQUEST: @@ -5968,10 +7630,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4396670784 - + + ABC-12345 + ccReg-1035262117 + ``` @@ -5986,7 +7648,7 @@ REQUEST: domain14.ee - b2b106747e308678a83d2e6eba9149cf + 8c8a24afd65fb32cbea0683f805a2394 @@ -6008,18 +7670,18 @@ RESPONSE: domain14.ee serverApproved - 222 - 2015-04-02 09:30:46 UTC - 111 - 2015-04-02 09:30:46 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:37 UTC + REGDOMAIN1 + 2015-05-27 10:43:37 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-3828737809 + - - ABC-12345 - ccReg-2042346800 - ``` @@ -6061,10 +7723,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-8668462665 - + + ABC-12345 + ccReg-6455795713 + ``` @@ -6109,10 +7771,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1154374419 - + + ABC-12345 + ccReg-8823340387 + ``` @@ -6127,7 +7789,7 @@ REQUEST: domain15.ee - 3bcc3c532d935e259e3841a8313fdd15 + 0f81c488e43a5ff0d09d9ae2ad89534e @@ -6149,18 +7811,18 @@ RESPONSE: domain15.ee serverApproved - 222 - 2015-04-02 09:30:46 UTC - 111 - 2015-04-02 09:30:46 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:38 UTC + REGDOMAIN1 + 2015-05-27 10:43:38 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-0363538601 + - - ABC-12345 - ccReg-9821029703 - ``` @@ -6202,10 +7864,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4088686497 - + + ABC-12345 + ccReg-5923931571 + ``` @@ -6250,10 +7912,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6492717966 - + + ABC-12345 + ccReg-3627375804 + ``` @@ -6286,11 +7948,11 @@ RESPONSE: Authorization error + + ABC-12345 + ccReg-1686309037 + - - ABC-12345 - ccReg-8048438585 - ``` @@ -6332,10 +7994,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7296528631 - + + ABC-12345 + ccReg-5701905644 + ``` @@ -6352,7 +8014,7 @@ REQUEST: domain17.ee - 35c48f9b0d4c7d70fb1571a9fff630e8 + 16eb001e706172697a4ae9ab2a7982d2 @@ -6379,18 +8041,18 @@ RESPONSE: domain17.ee clientApproved - 222 - 2015-04-02 09:30:47 UTC - 111 - 2015-04-02 09:30:47 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:38 UTC + REGDOMAIN1 + 2015-05-27 10:43:38 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-4816670665 + - - ABC-12345 - ccReg-8455837335 - ``` @@ -6434,10 +8096,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9895076557 - + + ABC-12345 + ccReg-8804211053 + ``` @@ -6452,7 +8114,7 @@ REQUEST: domain18.ee - 2f1d76dd1d400386194f78986c9a1387 + b9d30de5879c3596d1f8a6c69a832a8a @@ -6475,11 +8137,11 @@ RESPONSE: Transfer can be rejected only by current registrar + + ABC-12345 + ccReg-2803345752 + - - ABC-12345 - ccReg-3480621440 - ``` @@ -6521,10 +8183,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1371548665 - + + ABC-12345 + ccReg-6778373394 + ``` @@ -6539,7 +8201,7 @@ REQUEST: domain18.ee - 2f1d76dd1d400386194f78986c9a1387 + b9d30de5879c3596d1f8a6c69a832a8a @@ -6566,18 +8228,18 @@ RESPONSE: domain18.ee clientRejected - 222 - 2015-04-02 09:30:47 UTC - 111 - 2015-04-02 09:30:47 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:39 UTC + REGDOMAIN1 + 2015-05-27 10:43:39 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-5197335200 + - - ABC-12345 - ccReg-4727507539 - ``` @@ -6621,10 +8283,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7738853308 - + + ABC-12345 + ccReg-5888721799 + ``` @@ -6639,7 +8301,7 @@ REQUEST: domain19.ee - 44b3c808fcf89b69de50a5c6daabe206 + d41c85651d45c9289191006f559c9ec8 @@ -6662,11 +8324,11 @@ RESPONSE: Transfer can be approved only by current domain registrar + + ABC-12345 + ccReg-7064775457 + - - ABC-12345 - ccReg-3577435242 - ``` @@ -6708,10 +8370,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-8997502823 - + + ABC-12345 + ccReg-9310455244 + ``` @@ -6751,15 +8413,15 @@ RESPONSE: Authorization error + + ABC-12345 + ccReg-7658729961 + - - ABC-12345 - ccReg-6810281251 - ``` -### EPP Domain with valid domain ignores transfer when owner registrar requests transfer +### EPP Domain with valid domain ignores transfer wha registrant registrar requests transfer REQUEST: @@ -6771,7 +8433,7 @@ REQUEST: domain21.ee - 28ceb4792391b6fef2b39ebaa51efd20 + 8ab45ffd3acddb71c6359404cb4c2c34 @@ -6794,11 +8456,11 @@ RESPONSE: Domain already belongs to the querying registrar + + ABC-12345 + ccReg-1943177997 + - - ABC-12345 - ccReg-9527258829 - ``` @@ -6812,7 +8474,7 @@ REQUEST: - example38015316701110573.ee + example98769030605825402.ee 98oiewslkfkd @@ -6832,11 +8494,11 @@ RESPONSE: Attribute is invalid: op + + ABC-12345 + ccReg-6324054729 + - - ABC-12345 - ccReg-9405995760 - ``` @@ -6880,10 +8542,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6108949505 - + + ABC-12345 + ccReg-2397606336 + ``` @@ -6898,7 +8560,7 @@ REQUEST: domain22.ee - e26e60c11bce975174dd8c0c6eb34d6f + e9bfcbdfeeda4465e3a5f109f2377bca @@ -6925,18 +8587,18 @@ RESPONSE: domain22.ee serverApproved - 222 - 2015-04-02 09:30:48 UTC - 111 - 2015-04-02 09:30:48 UTC - 2016-04-02 00:00:00 UTC + REGDOMAIN2 + 2015-05-27 10:43:40 UTC + REGDOMAIN1 + 2015-05-27 10:43:40 UTC + 2016-05-27 00:00:00 UTC + + ABC-12345 + ccReg-4954465709 + - - ABC-12345 - ccReg-0849827514 - ``` @@ -6950,7 +8612,7 @@ REQUEST: domain22.ee - e26e60c11bce975174dd8c0c6eb34d6f + e9bfcbdfeeda4465e3a5f109f2377bca @@ -6973,11 +8635,11 @@ RESPONSE: Authorization error + + ABC-12345 + ccReg-5087615942 + - - ABC-12345 - ccReg-2282068554 - ``` @@ -7019,10 +8681,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-8548503025 - + + ABC-12345 + ccReg-6484511821 + ``` @@ -7039,7 +8701,7 @@ REQUEST: domain23.ee - 9dc563b201a0bd0719bbad1cfe144c1b + d3e0cefadeefa7f1b2868f852adf1228 @@ -7062,15 +8724,15 @@ RESPONSE: Pending transfer was not found + + ABC-12345 + ccReg-5156334511 + - - ABC-12345 - ccReg-5058318458 - ``` -### EPP Domain with valid domain updates a domain +### EPP Domain with valid domain should update right away without update pending status REQUEST: @@ -7082,7 +8744,7 @@ REQUEST: domain24.ee - citizen_1234 + FIXED:CITIZEN_1234 @@ -7106,11 +8768,99 @@ RESPONSE: Command completed successfully + + ABC-12345 + ccReg-1610390580 + + + +``` + +### EPP Domain with valid domain updates a domain + +REQUEST: + +```xml + + + + + + domain25.ee + + FIXED:CITIZEN_1234 + + + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully; action pending + + + ABC-12345 + ccReg-2809632744 + + + +``` + +### EPP Domain with valid domain should not allow any update when status pending update + +REQUEST: + +```xml + + + + + + domain26.ee + + FIXED:CITIZEN_1234 + + + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Object status prohibits operation + + + ABC-12345 + ccReg-8912347187 + - - ABC-12345 - ccReg-0340648474 - ``` @@ -7124,7 +8874,7 @@ REQUEST: - domain25.ee + domain27.ee @@ -7134,7 +8884,7 @@ REQUEST: ns2.example.com - mak21 + FIXED:MAK21 Payment overdue. @@ -7172,14 +8922,14 @@ RESPONSE: Contact was not found - mak21 + FIXED:MAK21 + + ABC-12345 + ccReg-7279422608 + - - ABC-12345 - ccReg-4989232734 - ``` @@ -7191,7 +8941,7 @@ REQUEST: - domain25.ee + domain27.ee @@ -7201,7 +8951,7 @@ REQUEST: ns2.example.com - mak21 + FIXED:MAK21 Payment overdue. @@ -7239,11 +8989,11 @@ RESPONSE: Command completed successfully + + ABC-12345 + ccReg-3196572742 + - - ABC-12345 - ccReg-2376189737 - ``` @@ -7255,7 +9005,7 @@ REQUEST: - domain25.ee + domain27.ee @@ -7265,7 +9015,7 @@ REQUEST: ns2.example.com - mak21 + FIXED:MAK21 Payment overdue. @@ -7303,25 +9053,19 @@ RESPONSE: Nameserver already exists on this domain [hostname] - ns1.example.com + ns2.example.com Nameserver already exists on this domain [hostname] - ns2.example.com + ns1.example.com Contact already exists on this domain [contact_code_cache] - mak21 - - - - Status already exists on this domain [value] - - clientHold + FIXED:MAK21 @@ -7331,9 +9075,9 @@ RESPONSE: - Public key already exists [public_key] + Status already exists on this domain [value] - 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + clientHold @@ -7342,11 +9086,162 @@ RESPONSE: 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 + + Public key already exists [public_key] + + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + + ABC-12345 + ccReg-3629702536 + + + +``` + +### EPP Domain with valid domain updates domain with registrant change what triggers action pending + +REQUEST: + +```xml + + + + + + domain28.ee + + FIXED:CITIZEN_1234 + + + + + ns1.example.com + + + ns2.example.com + + + FIXED:PENDINGMAK21 + Payment overdue. + + + + + + + + + 0 + 3 + 5 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + 256 + 3 + 254 + 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Contact was not found + + FIXED:PENDINGMAK21 + + + + ABC-12345 + ccReg-0035237276 + + + +``` + +REQUEST: + +```xml + + + + + + domain28.ee + + FIXED:CITIZEN_1234 + + + + + ns1.example.com + + + ns2.example.com + + + FIXED:PENDINGMAK21 + Payment overdue. + + + + + + + + + 0 + 3 + 5 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + 256 + 3 + 254 + 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully; action pending + + + ABC-12345 + ccReg-2590035754 + - - ABC-12345 - ccReg-8012751067 - ``` @@ -7360,7 +9255,7 @@ REQUEST: - domain26.ee + domain29.ee Payment overdue. @@ -7381,11 +9276,11 @@ RESPONSE: Parameter value policy error. Client-side object status management not supported: status [status] + + ABC-12345 + ccReg-0742932026 + - - ABC-12345 - ccReg-1067863132 - ``` @@ -7399,7 +9294,7 @@ REQUEST: - domain27.ee + domain30.ee @@ -7409,7 +9304,7 @@ REQUEST: ns2.example.com - citizen_1234 + FIXED:CITIZEN_1234 Payment overdue. @@ -7447,11 +9342,11 @@ RESPONSE: Command completed successfully + + ABC-12345 + ccReg-5200564648 + - - ABC-12345 - ccReg-3906653198 - ``` @@ -7463,14 +9358,14 @@ REQUEST: - domain27.ee + domain30.ee ns1.example.com - citizen_1234 + FIXED:CITIZEN_1234 @@ -7498,11 +9393,11 @@ RESPONSE: Command completed successfully + + ABC-12345 + ccReg-0319078323 + - - ABC-12345 - ccReg-8564278542 - ``` @@ -7514,14 +9409,14 @@ REQUEST: - domain27.ee + domain30.ee ns1.example.com - citizen_1234 + FIXED:CITIZEN_1234 @@ -7555,7 +9450,7 @@ RESPONSE: Contact was not found - citizen_1234 + FIXED:CITIZEN_1234 @@ -7570,11 +9465,11 @@ RESPONSE: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + ABC-12345 + ccReg-1059381148 + - - ABC-12345 - ccReg-5976251561 - ``` @@ -7588,7 +9483,7 @@ REQUEST: - domain28.ee + domain31.ee @@ -7611,11 +9506,11 @@ RESPONSE: serverHold + + ABC-12345 + ccReg-5054919824 + - - ABC-12345 - ccReg-8895696227 - ``` @@ -7629,14 +9524,14 @@ REQUEST: - domain29.ee + domain32.ee - ns.graham84.ee + ns.mclaughlinauer93.ee - sh6892878164 + FIXED:SH1132295975 @@ -7654,11 +9549,11 @@ RESPONSE: Command completed successfully + + ABC-12345 + ccReg-5215036552 + - - ABC-12345 - ccReg-8651137150 - ``` @@ -7670,14 +9565,14 @@ REQUEST: - domain29.ee + domain32.ee - ns.graham84.ee + ns.mclaughlinauer93.ee - sh6892878164 + FIXED:SH1132295975 @@ -7695,20 +9590,20 @@ RESPONSE: Nameserver already exists on this domain [hostname] - ns.graham84.ee + ns.mclaughlinauer93.ee Contact already exists on this domain [contact_code_cache] - sh6892878164 + FIXED:SH1132295975 + + ABC-12345 + ccReg-1074473944 + - - ABC-12345 - ccReg-4328077081 - ``` @@ -7722,9 +9617,9 @@ REQUEST: - domain30.ee + domain33.ee - citizen_1234 + FIXED:CITIZEN_1234 @@ -7742,11 +9637,11 @@ RESPONSE: Required parameter missing: extension > extdata > legalDocument [legal_document] + + ABC-12345 + ccReg-6965471467 + - - ABC-12345 - ccReg-6566236021 - ``` @@ -7760,7 +9655,7 @@ REQUEST: - domain31.ee + domain34.ee @@ -7783,11 +9678,11 @@ RESPONSE: invalidStatus + + ABC-12345 + ccReg-9485651549 + - - ABC-12345 - ccReg-8027057885 - ``` @@ -7801,8 +9696,8 @@ REQUEST: - domain32.ee - 2016-04-02 + domain35.ee + 2016-05-27 1 @@ -7822,14 +9717,14 @@ RESPONSE: - domain32.ee - 2017-04-02 00:00:00 UTC + domain35.ee + 2017-05-27 00:00:00 UTC - - ABC-12345 - ccReg-1155889097 - + + ABC-12345 + ccReg-2938890628 + ``` @@ -7844,7 +9739,7 @@ REQUEST: - domain33.ee + domain36.ee 2200-08-07 1 @@ -7866,11 +9761,11 @@ RESPONSE: 2200-08-07 + + ABC-12345 + ccReg-6690551934 + - - ABC-12345 - ccReg-9921182086 - ``` @@ -7884,8 +9779,8 @@ REQUEST: - domain34.ee - 2016-04-02 + domain37.ee + 2016-05-27 4 @@ -7906,11 +9801,11 @@ RESPONSE: 4 + + ABC-12345 + ccReg-2230915815 + - - ABC-12345 - ccReg-2768552598 - ``` @@ -7924,13 +9819,13 @@ REQUEST: - domain35.ee + domain38.ee 2fooBAR - ABC-12345 + ``` @@ -7946,21 +9841,22 @@ RESPONSE: - domain35.ee + domain38.ee Payment overdue. - sh7284535177 - sh3880278978 + FIXED:REGISTRANT2741815436 + FIXED:SH0138863290 + FIXED:SH2076456589 - ns.baumbach105.ee + ns.gislason114.ee 192.168.1.1 - ns.rosenbaum106.ee + ns.wilkinson115.ee 192.168.1.1 - ns.crooks107.ee + ns.lemke116.ee 192.168.1.1 @@ -7971,47 +9867,46 @@ RESPONSE: registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:43 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:43 UTC - 33fbbf9a8afc8eaab78beca8da2a9095 + fc35227d625b0f64334a64e79d830693 - - - - - 123 - 3 - 1 - abc - - 257 - 3 + + + + 123 3 - AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - - - - 123 - 3 - 1 - abc - - 0 - 3 - 5 - 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - - - - - - ABC-12345 - ccReg-1974888440 - + 1 + abc + + 257 + 3 + 3 + AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 + + + + 123 + 3 + 1 + abc + + 0 + 3 + 5 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + + + + ccReg-0824479428 + + ``` @@ -8023,13 +9918,13 @@ REQUEST: - domain35.ee + domain38.ee 2fooBAR - ABC-12345 + ``` @@ -8045,21 +9940,22 @@ RESPONSE: - domain35.ee + domain38.ee Payment overdue. - sh7284535177 - sh3880278978 + FIXED:REGISTRANT2741815436 + FIXED:SH0138863290 + FIXED:SH2076456589 - ns.baumbach105.ee + ns.gislason114.ee 192.168.1.1 - ns.rosenbaum106.ee + ns.wilkinson115.ee 192.168.1.1 - ns.crooks107.ee + ns.lemke116.ee 192.168.1.1 @@ -8070,47 +9966,46 @@ RESPONSE: registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:43 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:43 UTC - 33fbbf9a8afc8eaab78beca8da2a9095 + fc35227d625b0f64334a64e79d830693 - - - - - 123 - 3 - 1 - abc - - 257 - 3 + + + + 123 3 - AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - - - - 123 - 3 - 1 - abc - - 0 - 3 - 5 - 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - - - - - - ABC-12345 - ccReg-6008864794 - + 1 + abc + + 257 + 3 + 3 + AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 + + + + 123 + 3 + 1 + abc + + 0 + 3 + 5 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + + + + ccReg-2750667963 + + ``` @@ -8124,13 +10019,13 @@ REQUEST: - domain36.ee + domain39.ee 2fooBAR - ABC-12345 + ``` @@ -8144,11 +10039,10 @@ RESPONSE: Attribute is invalid: hosts + + ccReg-0144253530 + - - ABC-12345 - ccReg-3939237932 - ``` @@ -8160,13 +10054,13 @@ REQUEST: - domain36.ee + domain39.ee 2fooBAR - ABC-12345 + ``` @@ -8182,37 +10076,37 @@ RESPONSE: - domain36.ee + domain39.ee - sh4498443879 - sh4355215380 + FIXED:REGISTRANT3507395337 + FIXED:SH9812701792 + FIXED:SH5796684791 - ns1.domain36.ee + ns1.domain39.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A - ns2.domain36.ee + ns2.domain39.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:43 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:43 UTC - 4b37e8ab04620cef28710d125652e91e + fc42e6becbedb165889c19f43a2540ab + + ccReg-1069575583 + - - ABC-12345 - ccReg-6384280415 - ``` @@ -8224,13 +10118,13 @@ REQUEST: - domain36.ee + domain39.ee 2fooBAR - ABC-12345 + ``` @@ -8246,10 +10140,11 @@ RESPONSE: - domain36.ee + domain39.ee - sh4498443879 - sh4355215380 + FIXED:REGISTRANT3507395337 + FIXED:SH9812701792 + FIXED:SH5796684791 ns3.test.ee @@ -8259,19 +10154,18 @@ RESPONSE: registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:43 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:43 UTC - 4b37e8ab04620cef28710d125652e91e + fc42e6becbedb165889c19f43a2540ab + + ccReg-0643395459 + - - ABC-12345 - ccReg-8224764132 - ``` @@ -8283,13 +10177,13 @@ REQUEST: - domain36.ee + domain39.ee 2fooBAR - ABC-12345 + ``` @@ -8305,25 +10199,25 @@ RESPONSE: - domain36.ee + domain39.ee - sh4498443879 - sh4355215380 + FIXED:REGISTRANT3507395337 + FIXED:SH9812701792 + FIXED:SH5796684791 registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:43 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:43 UTC - 4b37e8ab04620cef28710d125652e91e + fc42e6becbedb165889c19f43a2540ab + + ccReg-3688764669 + - - ABC-12345 - ccReg-7332661363 - ``` @@ -8335,13 +10229,13 @@ REQUEST: - domain36.ee + domain39.ee 2fooBAR - ABC-12345 + ``` @@ -8357,18 +10251,19 @@ RESPONSE: - domain36.ee + domain39.ee - sh4498443879 - sh4355215380 + FIXED:REGISTRANT3507395337 + FIXED:SH9812701792 + FIXED:SH5796684791 - ns1.domain36.ee + ns1.domain39.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A - ns2.domain36.ee + ns2.domain39.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A @@ -8380,19 +10275,18 @@ RESPONSE: registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:43 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:43 UTC - 4b37e8ab04620cef28710d125652e91e + fc42e6becbedb165889c19f43a2540ab + + ccReg-5604815953 + - - ABC-12345 - ccReg-3772303930 - ``` @@ -8412,7 +10306,7 @@ REQUEST: - ABC-12345 + ``` @@ -8429,11 +10323,10 @@ RESPONSE: test.ee + + ccReg-5161660847 + - - ABC-12345 - ccReg-6273798373 - ``` @@ -8447,13 +10340,13 @@ REQUEST: - domain37.ee + domain40.ee 2fooBAR - ABC-12345 + ``` @@ -8469,39 +10362,39 @@ RESPONSE: - domain37.ee + domain40.ee - sh9104935681 - sh8882670882 + FIXED:REGISTRANT0887546238 + FIXED:SH8726482994 + FIXED:SH5179344293 - ns.dickensbeahan111.ee + ns.renner120.ee 192.168.1.1 - ns.hahn112.ee + ns.stiedemann121.ee 192.168.1.1 - ns.price113.ee + ns.walkermitchell122.ee 192.168.1.1 registrar1 - 2015-04-02 09:30:51 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:51 UTC + 2015-05-27 10:43:44 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:44 UTC - 6f92a3b0961e0b502da8b2ba0069f119 + 07b874494197f5d551179bde6c743dc1 + + ccReg-3483125791 + - - ABC-12345 - ccReg-1189117340 - ``` @@ -8545,10 +10438,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-5222570408 - + + ABC-12345 + ccReg-0433009755 + ``` @@ -8561,13 +10454,13 @@ REQUEST: - domain38.ee + domain41.ee 2fooBAR - ABC-12345 + ``` @@ -8581,11 +10474,10 @@ RESPONSE: Authorization error + + ccReg-9728706466 + - - ABC-12345 - ccReg-3637769101 - ``` @@ -8627,10 +10519,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-8212846190 - + + ABC-12345 + ccReg-3974422485 + ``` @@ -8675,10 +10567,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9203907921 - + + ABC-12345 + ccReg-4142452023 + ``` @@ -8691,10 +10583,10 @@ REQUEST: - domain39.ee + domain42.ee - ABC-12345 + ``` @@ -8710,36 +10602,36 @@ RESPONSE: - domain39.ee + domain42.ee - sh9393185485 - sh9937875586 + FIXED:REGISTRANT3430252540 + FIXED:SH3885267898 + FIXED:SH8898454097 - ns.kerlukeschuster117.ee + ns.bauch126.ee 192.168.1.1 - ns.ferrywhite118.ee + ns.millerhudson127.ee 192.168.1.1 - ns.adams119.ee + ns.jakubowskimacgyver128.ee 192.168.1.1 registrar1 - 2015-04-02 09:30:52 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:52 UTC + 2015-05-27 10:43:44 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:44 UTC + + ccReg-3186032703 + - - ABC-12345 - ccReg-0274089113 - ``` @@ -8781,10 +10673,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9142721117 - + + ABC-12345 + ccReg-7433830827 + ``` @@ -8829,10 +10721,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-2646431282 - + + ABC-12345 + ccReg-6666385262 + ``` @@ -8845,13 +10737,13 @@ REQUEST: - domain40.ee + domain43.ee - 82d3c691b479d51300fbc8247864015d + caeb09c88ac3065e75384525e444b28d - ABC-12345 + ``` @@ -8867,39 +10759,39 @@ RESPONSE: - domain40.ee + domain43.ee - sh8178403887 - sh9058803888 + FIXED:REGISTRANT1287087941 + FIXED:SH25240842100 + FIXED:SH4103432799 - ns.lang120.ee + ns.murphysawayn129.ee 192.168.1.1 - ns.krajcik121.ee + ns.parkerbailey130.ee 192.168.1.1 - ns.pfannerstill122.ee + ns.pagac131.ee 192.168.1.1 registrar1 - 2015-04-02 09:30:52 UTC - 2016-04-02 00:00:00 UTC - 2015-04-02 09:30:52 UTC + 2015-05-27 10:43:44 UTC + 2016-05-27 00:00:00 UTC + 2015-05-27 10:43:44 UTC - 82d3c691b479d51300fbc8247864015d + caeb09c88ac3065e75384525e444b28d + + ccReg-0149171551 + - - ABC-12345 - ccReg-1822021145 - ``` @@ -8941,10 +10833,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6032311880 - + + ABC-12345 + ccReg-1852061545 + ``` @@ -8959,7 +10851,7 @@ REQUEST: - domain41.ee + domain44.ee @@ -8978,14 +10870,14 @@ RESPONSE: - - Command completed successfully + + Command completed successfully; action pending + + ABC-12345 + ccReg-2271849131 + - - ABC-12345 - ccReg-0253339129 - ``` @@ -8999,7 +10891,7 @@ REQUEST: - domain42.ee + domain45.ee @@ -9021,11 +10913,51 @@ RESPONSE: Domain status prohibits operation + + ABC-12345 + ccReg-9476531499 + + + +``` + +### EPP Domain with valid domain does not delete domain with pending delete + +REQUEST: + +```xml + + + + + + domain46.ee + + + + + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Object status prohibits operation + + + ABC-12345 + ccReg-0939566483 + - - ABC-12345 - ccReg-9280243175 - ``` @@ -9056,11 +10988,11 @@ RESPONSE: Required parameter missing: extension > extdata > legalDocument [legal_document] + + ABC-12345 + ccReg-9335855114 + - - ABC-12345 - ccReg-5632446934 - ``` @@ -9098,10 +11030,10 @@ RESPONSE: - - ABC-12345 - ccReg-8120420843 - + + ABC-12345 + ccReg-4928370789 + ``` @@ -9114,7 +11046,7 @@ REQUEST: - domain43.ee + domain47.ee ABC-12345 @@ -9134,15 +11066,15 @@ RESPONSE: - domain43.ee + domain47.ee in use - - ABC-12345 - ccReg-5402119196 - + + ABC-12345 + ccReg-3952532476 + ``` @@ -9189,10 +11121,10 @@ RESPONSE: - - ABC-12345 - ccReg-2847422830 - + + ABC-12345 + ccReg-9733374439 + ``` @@ -9236,10 +11168,10 @@ RESPONSE: - - ABC-12345 - ccReg-2990576653 - + + ABC-12345 + ccReg-8694188647 + ``` @@ -9284,10 +11216,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-3536780546 - + + ABC-12345 + ccReg-5192810508 + ``` @@ -9301,7 +11233,7 @@ REQUEST: - domain44.ee + domain48.ee 256 3 @@ -9309,13 +11241,13 @@ REQUEST: cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de P1M13D - 1427967053 + 1432723426 ``` @@ -9326,14 +11258,17 @@ RESPONSE: - - Command completed successfully + + Unimplemented object service + + domain48.ee + + + 1432723426 + ccReg-7694214472 + - - 1427967053 - ccReg-5382286699 - ``` @@ -9346,20 +11281,20 @@ REQUEST: - domain44.ee + domain48.ee 3 8 cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de Invalid Expiry - 1427967053 + 1432723426 ``` @@ -9379,11 +11314,11 @@ RESPONSE: Invalid Expiry + + 1432723426 + ccReg-0640451513 + - - 1427967053 - ccReg-1200401461 - ``` @@ -9396,7 +11331,7 @@ REQUEST: - domain44.ee + domain48.ee 256 3 @@ -9404,13 +11339,13 @@ REQUEST: cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de Invalid Expiry - 1427967053 + 1432723426 ``` @@ -9427,11 +11362,11 @@ RESPONSE: Invalid Expiry + + 1432723426 + ccReg-7577070399 + - - 1427967053 - ccReg-7444929407 - ``` @@ -9444,7 +11379,7 @@ REQUEST: - domain44.ee + domain48.ee 256 3 @@ -9452,13 +11387,13 @@ REQUEST: cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de Invalid Absolute - 1427967053 + 1432723426 ``` @@ -9475,11 +11410,11 @@ RESPONSE: Invalid Absolute + + 1432723426 + ccReg-0078778441 + - - 1427967053 - ccReg-3602131394 - ``` @@ -9492,7 +11427,7 @@ REQUEST: - domain44.ee + domain48.ee 256 3 @@ -9500,14 +11435,14 @@ REQUEST: cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de P1D 2014-12-23 - 1427967053 + 1432723426 ``` @@ -9521,11 +11456,11 @@ RESPONSE: Exactly one parameter required: keyrelay > expiry > relative OR keyrelay > expiry > absolute + + 1432723426 + ccReg-9000657815 + - - 1427967053 - ccReg-1904450442 - ``` @@ -9538,7 +11473,7 @@ REQUEST: - domain44.ee + domain48.ee 256 3 @@ -9546,7 +11481,7 @@ REQUEST: cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de P1D @@ -9555,7 +11490,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1427967053 + 1432723426 ``` @@ -9566,14 +11501,17 @@ RESPONSE: - - Command completed successfully + + Unimplemented object service + + domain48.ee + + + 1432723426 + ccReg-5852406493 + - - 1427967053 - ccReg-4736415479 - ``` @@ -9586,7 +11524,7 @@ REQUEST: - domain44.ee + domain48.ee 256 3 @@ -9594,7 +11532,7 @@ REQUEST: cmlraXN0aGViZXN0 - ec4585b042057eed9d3ce096f64c2b96 + d3e3d1fe3ece74a0927320fb3bb567de P1D @@ -9603,7 +11541,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1427967054 + 1432723426 ``` @@ -9617,11 +11555,11 @@ RESPONSE: Attribute is invalid: type + + 1432723426 + ccReg-5724944407 + - - 1427967054 - ccReg-3574524353 - ``` @@ -9663,10 +11601,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-1815017065 - + + ABC-12345 + ccReg-9186607336 + ``` @@ -9680,7 +11618,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -9694,10 +11632,10 @@ RESPONSE: Command completed successfully; no messages - - 1427967054 - ccReg-1728191385 - + + 1432723427 + ccReg-4362839400 + ``` @@ -9742,10 +11680,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6295264865 - + + ABC-12345 + ccReg-0618571136 + ``` @@ -9757,7 +11695,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -9771,10 +11709,10 @@ RESPONSE: Command completed successfully; no messages - - 1427967054 - ccReg-4959006260 - + + 1432723427 + ccReg-9229141591 + ``` @@ -9817,10 +11755,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7806182071 - + + ABC-12345 + ccReg-7150833559 + ``` @@ -9832,7 +11770,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -9847,13 +11785,13 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-04-02 09:30:54 UTC + 2015-05-27 10:43:47 UTC Balance low. - - 1427967054 - ccReg-1065036331 - + + 1432723427 + ccReg-6409633797 + ``` @@ -9896,10 +11834,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4737308347 - + + ABC-12345 + ccReg-1091372734 + ``` @@ -9911,7 +11849,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -9928,11 +11866,11 @@ RESPONSE: 1 + + 1432723427 + ccReg-4266035206 + - - 1427967054 - ccReg-5155427619 - ``` @@ -9974,10 +11912,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-6756422935 - + + ABC-12345 + ccReg-5253306865 + ``` @@ -9989,7 +11927,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10004,10 +11942,10 @@ RESPONSE: Command completed successfully - - 1427967054 - ccReg-7615901694 - + + 1432723427 + ccReg-5030345374 + ``` @@ -10019,7 +11957,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10036,11 +11974,11 @@ RESPONSE: 1 + + 1432723427 + ccReg-3853180260 + - - 1427967054 - ccReg-0875606068 - ``` @@ -10053,7 +11991,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10067,11 +12005,11 @@ RESPONSE: Attribute is invalid: op + + 1432723427 + ccReg-4855688629 + - - 1427967054 - ccReg-7102855017 - ``` @@ -10084,7 +12022,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10099,13 +12037,13 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-04-02 09:30:54 UTC + 2015-05-27 10:43:47 UTC Smth else. - - 1427967054 - ccReg-2968797976 - + + 1432723427 + ccReg-8604749468 + ``` @@ -10117,7 +12055,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10132,10 +12070,10 @@ RESPONSE: Command completed successfully - - 1427967054 - ccReg-8087270127 - + + 1432723427 + ccReg-9137309782 + ``` @@ -10147,7 +12085,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10162,13 +12100,13 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-04-02 09:30:54 UTC + 2015-05-27 10:43:47 UTC Something. - - 1427967054 - ccReg-4746360314 - + + 1432723427 + ccReg-9591605036 + ``` @@ -10180,7 +12118,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10195,10 +12133,10 @@ RESPONSE: Command completed successfully - - 1427967054 - ccReg-2705511628 - + + 1432723427 + ccReg-3197560707 + ``` @@ -10210,7 +12148,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10225,13 +12163,13 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-04-02 09:30:54 UTC + 2015-05-27 10:43:47 UTC Balance low. - - 1427967054 - ccReg-3482010110 - + + 1432723427 + ccReg-9671477441 + ``` @@ -10243,7 +12181,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10258,10 +12196,10 @@ RESPONSE: Command completed successfully - - 1427967054 - ccReg-1008015830 - + + 1432723427 + ccReg-9804202574 + ``` @@ -10273,7 +12211,7 @@ REQUEST: - 1427967054 + 1432723427 ``` @@ -10287,10 +12225,10 @@ RESPONSE: Command completed successfully; no messages - - 1427967054 - ccReg-1326047312 - + + 1432723427 + ccReg-8729751147 + ``` @@ -10304,7 +12242,7 @@ RESPONSE: EPP server (EIS) - 2015-04-02T09:30:55Z + 2015-05-27T10:43:48Z 1.0 en @@ -10378,11 +12316,11 @@ RESPONSE: Authentication error; server closing connection + + ABC-12345 + ccReg-7587508443 + - - ABC-12345 - ccReg-7067103299 - ``` @@ -10426,11 +12364,11 @@ RESPONSE: Authentication error; server closing connection + + ABC-12345 + ccReg-7134407379 + - - ABC-12345 - ccReg-9646591596 - ``` @@ -10459,11 +12397,58 @@ RESPONSE: You need to login first. + + ABC-12345 + ccReg-5606311571 + + + +``` + +### EPP Session when connected should not have clTRID in response if client does not send it + +REQUEST: + +```xml + + + + + wrong-user + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + + + +``` + +RESPONSE: + +```xml + + + + + Authentication error; server closing connection + + + ccReg-3376507236 + - - ABC-12345 - ccReg-5691369575 - ``` @@ -10507,10 +12492,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-4033240040 - + + ABC-12345 + ccReg-1053185597 + ``` @@ -10555,10 +12540,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-9199828071 - + + ABC-12345 + ccReg-9585410433 + ``` @@ -10601,11 +12586,11 @@ RESPONSE: Already logged in. Use <logout> first. + + ABC-12345 + ccReg-0652880827 + - - ABC-12345 - ccReg-7373047914 - ``` @@ -10649,10 +12634,10 @@ RESPONSE: Command completed successfully - - ABC-12345 - ccReg-7594007931 - + + ABC-12345 + ccReg-4357103420 + ``` @@ -10678,11 +12663,109 @@ RESPONSE: Command completed successfully; ending session + + ABC-12345 + ccReg-2409810658 + + + +``` + +### EPP Session when connected with valid user changes password and logs in + +REQUEST: + +```xml + + + + + gitlab + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + abcdefg + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-7664508234 + + + +``` + +### EPP Session when connected with valid user fails if new password is not valid + +REQUEST: + +```xml + + + + + gitlab + ghyt9e4fu + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Password is missing [password] + + + ABC-12345 + ccReg-8555388764 + - - ABC-12345 - ccReg-0995963655 - ``` From bd18cc0a85804441298bdcc8976a550a6dac0907 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 27 May 2015 16:27:41 +0300 Subject: [PATCH 008/174] Fix date formats in EPP #2644 --- app/views/epp/contacts/create.xml.builder | 2 +- app/views/epp/contacts/info.xml.builder | 4 +-- app/views/epp/contacts/update.xml.builder | 2 +- app/views/epp/domains/create.xml.builder | 4 +-- app/views/epp/domains/info.xml.builder | 6 ++-- .../domains/partials/_transfer.xml.builder | 6 ++-- app/views/epp/domains/renew.xml.builder | 2 +- app/views/epp/poll/poll_keyrelay.xml.builder | 4 +-- app/views/epp/poll/poll_req.xml.builder | 2 +- spec/epp/contact_spec.rb | 22 ++++++------ spec/epp/domain_spec.rb | 34 +++++++++---------- 11 files changed, 44 insertions(+), 44 deletions(-) diff --git a/app/views/epp/contacts/create.xml.builder b/app/views/epp/contacts/create.xml.builder index 8e96f27f0..da48d780c 100644 --- a/app/views/epp/contacts/create.xml.builder +++ b/app/views/epp/contacts/create.xml.builder @@ -7,7 +7,7 @@ xml.epp_head do xml.resData do xml.tag!('contact:creData', 'xmlns:contact' => 'urn:ietf:params:xml:ns:contact-1.0') do xml.tag!('contact:id', @contact.code) - xml.tag!('contact:crDate', @contact.created_at) + xml.tag!('contact:crDate', @contact.created_at.try(:iso8601)) end end diff --git a/app/views/epp/contacts/info.xml.builder b/app/views/epp/contacts/info.xml.builder index ce692020c..82edd64b8 100644 --- a/app/views/epp/contacts/info.xml.builder +++ b/app/views/epp/contacts/info.xml.builder @@ -29,10 +29,10 @@ xml.epp_head do xml.tag!('contact:clID', @contact.registrar.try(:name)) xml.tag!('contact:crID', @contact.creator.try(:registrar)) - xml.tag!('contact:crDate', @contact.created_at) + xml.tag!('contact:crDate', @contact.created_at.try(:iso8601)) if @contact.updated_at != @contact.created_at xml.tag!('contact:upID', @contact.updator.try(:registrar)) - xml.tag!('contact:upDate', @contact.updated_at) + xml.tag!('contact:upDate', @contact.updated_at.try(:iso8601)) end # xml.tag!('contact:trDate', '123') if false if can? :view_password, @contact, @password diff --git a/app/views/epp/contacts/update.xml.builder b/app/views/epp/contacts/update.xml.builder index 8e96f27f0..da48d780c 100644 --- a/app/views/epp/contacts/update.xml.builder +++ b/app/views/epp/contacts/update.xml.builder @@ -7,7 +7,7 @@ xml.epp_head do xml.resData do xml.tag!('contact:creData', 'xmlns:contact' => 'urn:ietf:params:xml:ns:contact-1.0') do xml.tag!('contact:id', @contact.code) - xml.tag!('contact:crDate', @contact.created_at) + xml.tag!('contact:crDate', @contact.created_at.try(:iso8601)) end end diff --git a/app/views/epp/domains/create.xml.builder b/app/views/epp/domains/create.xml.builder index 6ccfda07b..ba6661504 100644 --- a/app/views/epp/domains/create.xml.builder +++ b/app/views/epp/domains/create.xml.builder @@ -7,8 +7,8 @@ xml.epp_head do xml.resData do xml.tag!('domain:creData', 'xmlns:domain' => 'urn:ietf:params:xml:ns:domain-1.0') do xml.tag!('domain:name', @domain.name) - xml.tag!('domain:crDate', @domain.created_at) - xml.tag!('domain:exDate', @domain.valid_to) + xml.tag!('domain:crDate', @domain.created_at.try(:iso8601)) + xml.tag!('domain:exDate', @domain.valid_to.try(:iso8601)) end end diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder index 57d4903f0..d4fc26036 100644 --- a/app/views/epp/domains/info.xml.builder +++ b/app/views/epp/domains/info.xml.builder @@ -40,14 +40,14 @@ xml.epp_head do xml.tag!('domain:crID', @domain.creator.try(:registrar)) - xml.tag!('domain:crDate', @domain.created_at) + xml.tag!('domain:crDate', @domain.created_at.try(:iso8601)) - xml.tag!('domain:exDate', @domain.valid_to) + xml.tag!('domain:exDate', @domain.valid_to.try(:iso8601)) # TODO Make domain stampable #xml.tag!('domain:upID', @domain.updated_by) - xml.tag!('domain:upDate', @domain.updated_at) if @domain.updated_at != @domain.created_at + xml.tag!('domain:upDate', @domain.updated_at.try(:iso8601)) if @domain.updated_at != @domain.created_at # TODO Make domain transferrable #xml.tag!('domain:trDate', @domain.transferred_at) if @domain.transferred_at diff --git a/app/views/epp/domains/partials/_transfer.xml.builder b/app/views/epp/domains/partials/_transfer.xml.builder index 893cd7c2e..39f9b147f 100644 --- a/app/views/epp/domains/partials/_transfer.xml.builder +++ b/app/views/epp/domains/partials/_transfer.xml.builder @@ -2,8 +2,8 @@ builder.tag!('domain:trnData', 'xmlns:domain' => 'urn:ietf:params:xml:ns:domain- builder.tag!('domain:name', dt.domain_name) builder.tag!('domain:trStatus', dt.status) builder.tag!('domain:reID', dt.transfer_to.code) - builder.tag!('domain:reDate', dt.transfer_requested_at) + builder.tag!('domain:reDate', dt.transfer_requested_at.try(:iso8601)) builder.tag!('domain:acID', dt.transfer_from.code) - builder.tag!('domain:acDate', dt.transferred_at || dt.wait_until) - builder.tag!('domain:exDate', dt.domain_valid_to) + builder.tag!('domain:acDate', dt.transferred_at.try(:iso8601) || dt.wait_until.try(:iso8601)) + builder.tag!('domain:exDate', dt.domain_valid_to.try(:iso8601)) end diff --git a/app/views/epp/domains/renew.xml.builder b/app/views/epp/domains/renew.xml.builder index f1d2a7742..ea2192c18 100644 --- a/app/views/epp/domains/renew.xml.builder +++ b/app/views/epp/domains/renew.xml.builder @@ -7,7 +7,7 @@ xml.epp_head do xml.resData do xml.tag!('domain:renData', 'xmlns:domain' => 'urn:ietf:params:xml:ns:domain-1.0') do xml.tag!('domain:name', @domain[:name]) - xml.tag!('domain:exDate', @domain.valid_to) + xml.tag!('domain:exDate', @domain.valid_to.try(:iso8601)) end end diff --git a/app/views/epp/poll/poll_keyrelay.xml.builder b/app/views/epp/poll/poll_keyrelay.xml.builder index 4189c6e82..5b037702a 100644 --- a/app/views/epp/poll/poll_keyrelay.xml.builder +++ b/app/views/epp/poll/poll_keyrelay.xml.builder @@ -11,7 +11,7 @@ xml.epp( end xml.tag!('msgQ', 'count' => current_user.queued_messages.count, 'id' => @message.id) do - xml.qDate @message.created_at + xml.qDate @message.created_at.try(:iso8601) xml.msg @message.body end @@ -19,7 +19,7 @@ xml.epp( xml.tag!('keyrelay:response') do xml.tag!('keyrelay:panData') do xml.tag!('keyrelay:name', @object.domain_name) - xml.tag!('keyrelay:paDate', @object.pa_date) + xml.tag!('keyrelay:paDate', @object.pa_date.try(:iso8601)) xml.tag!('keyrelay:keyData') do xml.tag!('secDNS:flags', @object.key_data_flags) diff --git a/app/views/epp/poll/poll_req.xml.builder b/app/views/epp/poll/poll_req.xml.builder index b79ba160b..347f0a632 100644 --- a/app/views/epp/poll/poll_req.xml.builder +++ b/app/views/epp/poll/poll_req.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.tag!('msgQ', 'count' => current_user.queued_messages.count, 'id' => @message.id) do - xml.qDate @message.created_at + xml.qDate @message.created_at.try(:iso8601) xml.msg @message.body end diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 2d92329a4..19a0a3d0d 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -51,19 +51,19 @@ describe 'EPP Contact', epp: true do response = epp_plain_request(@epp_xml.create, :xml) response[:results][0][:msg].should == 'Required parameter missing: create > create > postalInfo > name [name]' - response[:results][1][:msg].should == + response[:results][1][:msg].should == 'Required parameter missing: create > create > postalInfo > addr > street [street]' - response[:results][2][:msg].should == + response[:results][2][:msg].should == 'Required parameter missing: create > create > postalInfo > addr > city [city]' - response[:results][3][:msg].should == + response[:results][3][:msg].should == 'Required parameter missing: create > create > postalInfo > addr > pc [pc]' - response[:results][4][:msg].should == + response[:results][4][:msg].should == 'Required parameter missing: create > create > postalInfo > addr > cc [cc]' - response[:results][5][:msg].should == + response[:results][5][:msg].should == 'Required parameter missing: create > create > voice [voice]' - response[:results][6][:msg].should == + response[:results][6][:msg].should == 'Required parameter missing: create > create > email [email]' - response[:results][7][:msg].should == + response[:results][7][:msg].should == 'Required parameter missing: extension > extdata > ident [ident]' response[:results][0][:result_code].should == '2003' @@ -299,7 +299,7 @@ describe 'EPP Contact', epp: true do response = update_request({ id: { value: 'FIRST0:SH8013' } }) response[:msg].should == 'Command completed successfully' - + @contact.reload @contact.name.should == 'John Doe Edited' @contact.email.should == 'edited@example.example' @@ -629,12 +629,12 @@ describe 'EPP Contact', epp: true do id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, rem: { - postalInfo: { org: { value: 'not important' } } + postalInfo: { org: { value: 'not important' } } } }) response = epp_plain_request(xml, :xml) - response[:results][0][:msg].should == + response[:results][0][:msg].should == 'Parameter value policy error. Org must be blank: postalInfo > org [org]' response[:results][0][:result_code].should == '2306' end @@ -644,7 +644,7 @@ describe 'EPP Contact', epp: true do id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, rem: { - postalInfo: { + postalInfo: { name: { value: 'not important' } } } diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index b886e229e..0440e6995 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -88,8 +88,8 @@ describe 'EPP Domain', epp: true do cre_data = response[:parsed].css('creData') cre_data.css('name').text.should == dn - cre_data.css('crDate').text.should == d.created_at.to_time.utc.to_s - cre_data.css('exDate').text.should == d.valid_to.to_time.utc.to_s + cre_data.css('crDate').text.should == d.created_at.to_time.utc.iso8601 + cre_data.css('exDate').text.should == d.valid_to.to_time.utc.iso8601 response[:clTRID].should == 'ABC-12345' @@ -733,10 +733,10 @@ describe 'EPP Domain', epp: true do trn_data.css('name').text.should == domain.name trn_data.css('trStatus').text.should == 'serverApproved' trn_data.css('reID').text.should == 'REGDOMAIN2' - trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.to_s + trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.iso8601 trn_data.css('acID').text.should == 'REGDOMAIN1' - trn_data.css('acDate').text.should == dtl.transferred_at.to_time.utc.to_s - trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.to_s + trn_data.css('acDate').text.should == dtl.transferred_at.to_time.utc.iso8601 + trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.iso8601 domain.registrar.should == @registrar2 @@ -777,10 +777,10 @@ describe 'EPP Domain', epp: true do trn_data.css('name').text.should == domain.name trn_data.css('trStatus').text.should == 'pending' trn_data.css('reID').text.should == 'REGDOMAIN1' - trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.to_s - trn_data.css('acDate').text.should == dtl.wait_until.to_time.utc.to_s + trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.iso8601 + trn_data.css('acDate').text.should == dtl.wait_until.to_time.utc.iso8601 trn_data.css('acID').text.should == 'REGDOMAIN2' - trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.to_s + trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.iso8601 domain.registrar.should == @registrar2 @@ -792,10 +792,10 @@ describe 'EPP Domain', epp: true do trn_data.css('name').text.should == domain.name trn_data.css('trStatus').text.should == 'pending' trn_data.css('reID').text.should == 'REGDOMAIN1' - trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.to_s - trn_data.css('acDate').text.should == dtl.wait_until.to_time.utc.to_s + trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.iso8601 + trn_data.css('acDate').text.should == dtl.wait_until.to_time.utc.iso8601 trn_data.css('acID').text.should == 'REGDOMAIN2' - trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.to_s + trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.iso8601 domain.registrar.should == @registrar2 @@ -1199,9 +1199,9 @@ describe 'EPP Domain', epp: true do trn_data.css('name').text.should == domain.name trn_data.css('trStatus').text.should == 'clientApproved' trn_data.css('reID').text.should == 'REGDOMAIN2' - trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.to_s + trn_data.css('reDate').text.should == dtl.transfer_requested_at.to_time.utc.iso8601 trn_data.css('acID').text.should == 'REGDOMAIN1' - trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.to_s + trn_data.css('exDate').text.should == domain.valid_to.to_time.utc.iso8601 end it 'rejects a domain transfer' do @@ -1870,7 +1870,7 @@ describe 'EPP Domain', epp: true do ex_date = response[:parsed].css('renData exDate').text name = response[:parsed].css('renData name').text - ex_date.should == "#{(exp_date + 1.year)} 00:00:00 UTC" + ex_date.should == "#{(exp_date + 1.year)}T00:00:00Z" name.should == domain.name end @@ -1957,8 +1957,8 @@ describe 'EPP Domain', epp: true do ns1.css('hostName').last.text.should == 'ns1.example.com' ns1.css('hostAddr').first.text.should == '192.168.1.1' ns1.css('hostAddr').last.text.should == '1080:0:0:0:8:800:200C:417A' - inf_data.css('crDate').text.should == domain.created_at.to_time.utc.to_s - inf_data.css('exDate').text.should == domain.valid_to.to_time.utc.to_s + inf_data.css('crDate').text.should == domain.created_at.to_time.utc.iso8601 + inf_data.css('exDate').text.should == domain.valid_to.to_time.utc.iso8601 inf_data.css('pw').text.should == domain.auth_info ds_data_1 = response[:parsed].css('dsData')[0] @@ -1987,7 +1987,7 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(domain_info_xml(name: { value: domain.name }), :xml) inf_data = response[:parsed].css('resData infData') - inf_data.css('upDate').text.should == domain.updated_at.to_time.utc.to_s + inf_data.css('upDate').text.should == domain.updated_at.to_time.utc.iso8601 end it 'returns domain info with different nameservers' do From 573349d0b61a1ff4ecbca7243167fe7a3d77e168 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 28 May 2015 12:07:18 +0300 Subject: [PATCH 009/174] Allow removing contacts one by one #2596 --- app/models/depp/domain.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/models/depp/domain.rb b/app/models/depp/domain.rb index 857f74fb2..4a13d5ba5 100644 --- a/app/models/depp/domain.rb +++ b/app/models/depp/domain.rb @@ -192,10 +192,10 @@ module Depp end def construct_edit_hash(domain_params, old_domain_params) - contacts = create_contacts_hash(domain_params) - create_contacts_hash(old_domain_params) + contacts = array_difference(create_contacts_hash(domain_params), create_contacts_hash(old_domain_params)) add_anon = contacts - contacts = create_contacts_hash(old_domain_params) - create_contacts_hash(domain_params) + contacts = array_difference(create_contacts_hash(old_domain_params), create_contacts_hash(domain_params)) rem_anon = contacts if domain_params[:registrant] != old_domain_params[:registrant] @@ -284,6 +284,15 @@ module Depp pubKey: { value: key_data_params['public_key'] } } end + + def array_difference(x, y) + ret = x.dup + y.each do |element| + index = ret.index(element) + ret.delete_at(index) if index + end + ret + end end end end From a9449bb05e461ef07c22fc0134bdecd5adff5b8e Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 28 May 2015 12:29:37 +0300 Subject: [PATCH 010/174] Revert "Remove Gitlab internal documents" This reverts commit e8d7f02ce5754f9a3235bba4d1d9514ede8c9a63. --- doc/schemas/contact-1.0.xsd | 408 +++++++++++++++++++++++++++++++++ doc/schemas/domain-1.0.xsd | 432 +++++++++++++++++++++++++++++++++++ doc/schemas/epp-1.0.xsd | 443 ++++++++++++++++++++++++++++++++++++ doc/schemas/eppcom-1.0.xsd | 105 +++++++++ doc/schemas/host-1.0.xsd | 244 ++++++++++++++++++++ 5 files changed, 1632 insertions(+) create mode 100644 doc/schemas/contact-1.0.xsd create mode 100644 doc/schemas/domain-1.0.xsd create mode 100644 doc/schemas/epp-1.0.xsd create mode 100644 doc/schemas/eppcom-1.0.xsd create mode 100644 doc/schemas/host-1.0.xsd diff --git a/doc/schemas/contact-1.0.xsd b/doc/schemas/contact-1.0.xsd new file mode 100644 index 000000000..dc2b366e6 --- /dev/null +++ b/doc/schemas/contact-1.0.xsd @@ -0,0 +1,408 @@ + + + + + + + + + + + Extensible Provisioning Protocol v1.0 + contact provisioning schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/schemas/domain-1.0.xsd b/doc/schemas/domain-1.0.xsd new file mode 100644 index 000000000..0774da0a8 --- /dev/null +++ b/doc/schemas/domain-1.0.xsd @@ -0,0 +1,432 @@ + + + + + + + + + + + + Extensible Provisioning Protocol v1.0 + domain provisioning schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/schemas/epp-1.0.xsd b/doc/schemas/epp-1.0.xsd new file mode 100644 index 000000000..1efc25947 --- /dev/null +++ b/doc/schemas/epp-1.0.xsd @@ -0,0 +1,443 @@ + + + + + + + + + + Extensible Provisioning Protocol v1.0 schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/schemas/eppcom-1.0.xsd b/doc/schemas/eppcom-1.0.xsd new file mode 100644 index 000000000..d6ef94b24 --- /dev/null +++ b/doc/schemas/eppcom-1.0.xsd @@ -0,0 +1,105 @@ + + + + + + + Extensible Provisioning Protocol v1.0 + shared structures schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/schemas/host-1.0.xsd b/doc/schemas/host-1.0.xsd new file mode 100644 index 000000000..47015ec83 --- /dev/null +++ b/doc/schemas/host-1.0.xsd @@ -0,0 +1,244 @@ + + + + + + + + + + + Extensible Provisioning Protocol v1.0 + host provisioning schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 340ca96d1eefffdcee8d6c8185413b9d6d742e1c Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 28 May 2015 17:02:59 +0300 Subject: [PATCH 011/174] Added more epp tests about domain verify logic #2557 --- spec/epp/domain_spec.rb | 77 ++++++++++++++++++++++++++++++++++++++ spec/models/domain_spec.rb | 21 +++++++++++ 2 files changed, 98 insertions(+) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 0440e6995..f222f5abb 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -1411,6 +1411,83 @@ describe 'EPP Domain', epp: true do d.pending_update?.should == true end + it 'should not return action pending when changes are invalid' do + existing_pw = domain.auth_info + + xml_params = { + name: { value: domain.name }, + chg: [ + registrant: { value: 'FIXED:CITIZEN_1234' } + ], + rem: + domain.nameservers.map do |ns| + { + ns: [ + { + hostAttr: [ + { hostName: { value: ns.hostname } } + ] + } + ] + } + end + } + + response = epp_plain_request(domain_update_xml(xml_params, {}, { + _anonymus: [ + legalDocument: { + value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + attrs: { type: 'pdf' } + } + ] + }), :xml) + + response[:results][0][:msg].should == 'Nameservers count must be between 2-11 [nameservers]' + response[:results][0][:result_code].should == '2004' + + d = Domain.last + + d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update, because pending + d.auth_info.should == existing_pw + d.nameservers.size == 3 + d.pending_update?.should == false + end + + it 'should not return action pending when domain itself is already invaid' do + domain_id = domain.id + domain.nameservers.delete_all + domain.save(validate: false) + domain.reload.nameservers.size.should == 0 + + existing_pw = domain.auth_info + + xml_params = { + name: { value: domain.name }, + chg: [ + registrant: { value: 'FIXED:CITIZEN_1234' } + ] + } + + response = epp_plain_request(domain_update_xml(xml_params, {}, { + _anonymus: [ + legalDocument: { + value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + attrs: { type: 'pdf' } + } + ] + }), :xml) + + response[:results][0][:msg].should == 'Nameservers count must be between 2-11 [nameservers]' + response[:results][0][:result_code].should == '2004' + + d = Domain.find(domain_id) + + d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update, because pending + d.auth_info.should == existing_pw + d.nameservers.size.should == 0 + d.pending_update?.should == false + end + it 'should not allow any update when status pending update' do domain.domain_statuses.create(value: DomainStatus::PENDING_UPDATE) diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 56d9ee57f..741721f4e 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -106,6 +106,27 @@ describe Domain do end end + context 'about registrant update confirm when domain is invalid' do + before :all do + @domain.registrant_verification_token = 123 + @domain.registrant_verification_asked_at = Time.zone.now + @domain.domain_statuses.create(value: DomainStatus::PENDING_UPDATE) + end + + it 'should be registrant update confirm ready' do + @domain.registrant_update_confirmable?('123').should == true + end + + it 'should not be registrant update confirm ready when token does not match' do + @domain.registrant_update_confirmable?('wrong-token').should == false + end + + it 'should not be registrant update confirm ready when no correct status' do + @domain.domain_statuses.delete_all + @domain.registrant_update_confirmable?('123').should == false + end + end + context 'with versioning' do it 'should not have one version' do with_versioning do From 2ecce2141ec6a64dcdc5b090e8f1958257aa70cc Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 28 May 2015 18:39:26 +0300 Subject: [PATCH 012/174] Add schema validations for session spec #2660 --- Gemfile | 2 +- Gemfile.lock | 4 ++-- spec/epp/contact_spec.rb | 9 --------- spec/epp/requests/contacts/renew.xml | 15 --------------- spec/epp/session_spec.rb | 23 ++++++++++++++++++++--- spec/support/epp.rb | 28 ++++++++++++++++++++-------- 6 files changed, 43 insertions(+), 38 deletions(-) delete mode 100644 spec/epp/requests/contacts/renew.xml diff --git a/Gemfile b/Gemfile index ee11fae90..878dc62bf 100644 --- a/Gemfile +++ b/Gemfile @@ -68,7 +68,7 @@ gem 'digidoc_client', '~> 0.2.1' # epp gem 'epp', '~> 1.4.2', github: 'gitlabeu/epp' -gem 'epp-xml', '~> 0.10.4' # EPP XMLs +gem 'epp-xml', '~> 1.0.1' # EPP XMLs gem 'uuidtools', '~> 2.1.4' # For unique IDs (used by the epp gem) # for importing legacy db diff --git a/Gemfile.lock b/Gemfile.lock index 859830bbf..9b674285f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -161,7 +161,7 @@ GEM nokogiri (>= 1.4.0) savon (>= 2.4.0) docile (1.1.5) - epp-xml (0.10.4) + epp-xml (1.0.1) activesupport (~> 4.1) builder (~> 3.2) equalizer (0.0.11) @@ -512,7 +512,7 @@ DEPENDENCIES devise (~> 3.4.1) digidoc_client (~> 0.2.1) epp (~> 1.4.2)! - epp-xml (~> 0.10.4) + epp-xml (~> 1.0.1) fabrication (~> 2.12.2) faker (~> 1.3.0) figaro (~> 1.1.0) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 19a0a3d0d..02540e109 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -939,15 +939,6 @@ describe 'EPP Contact', epp: true do end end end - - context 'renew command' do - it 'returns 2101-unimplemented command' do - response = epp_plain_request('contacts/renew.xml') - - response[:msg].should == 'Unimplemented command' - response[:result_code].should == '2101' - end - end end def check_multiple_contacts_xml diff --git a/spec/epp/requests/contacts/renew.xml b/spec/epp/requests/contacts/renew.xml deleted file mode 100644 index aeffaa569..000000000 --- a/spec/epp/requests/contacts/renew.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - info-4444 - - 2fooBAR - - - - ABC-12345 - - diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 4f4cde6c4..cdc36d2ee 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -5,6 +5,7 @@ describe 'EPP Session', epp: true do @api_user = Fabricate(:gitlab_api_user) @epp_xml = EppXml.new(cl_trid: 'ABC-12345') @login_xml_cache = @epp_xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }) + @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/epp-1.0.xsd')) end context 'when not connected' do @@ -40,14 +41,15 @@ describe 'EPP Session', epp: true do end it 'prohibits further actions unless logged in' do - response = epp_plain_request(@epp_xml.domain.create, :xml) + @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-1.0.xsd')) + response = epp_plain_request(@epp_xml.domain.info(name: { value: 'test.ee' }), :xml) response[:msg].should == 'You need to login first.' response[:result_code].should == '2002' response[:clTRID].should == 'ABC-12345' end it 'should not have clTRID in response if client does not send it' do - epp_xml_no_cltrid = EppXml.new(cl_trid: '') + epp_xml_no_cltrid = EppXml.new(cl_trid: false) wrong_user = epp_xml_no_cltrid.session.login(clID: { value: 'wrong-user' }, pw: { value: 'ghyt9e4fu' }) response = epp_plain_request(wrong_user, :xml) response[:clTRID].should be_nil @@ -115,7 +117,22 @@ describe 'EPP Session', epp: true do clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }, newPW: { value: '' } - ), :xml) + ), validate_input: false) + + response[:msg].should == 'Password is missing [password]' + response[:result_code].should == '2306' + + @api_user.reload + @api_user.password.should == 'ghyt9e4fu' + end + + it 'fails if new password is not valid' do + @api_user.update(password: 'ghyt9e4fu') + response = epp_plain_request(@epp_xml.session.login( + clID: { value: 'gitlab' }, + pw: { value: 'ghyt9e4fu' }, + newPW: { value: '' } + ), validate_input: false) response[:msg].should == 'Password is missing [password]' response[:result_code].should == '2306' diff --git a/spec/support/epp.rb b/spec/support/epp.rb index f877bfc2f..9673b8db7 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -66,15 +66,27 @@ module Epp end def epp_plain_request(data, *args) - res = parse_response(server.send_request(data)) if args.include?(:xml) - if res - log(data, res[:parsed]) - return res + options = args.extract_options! + validate_input = options[:validate_input] != false # true by default + validate_output = options[:validate_output] != false # true by default + + if validate_input && @xsd + xml = Nokogiri::XML(data) + @xsd.validate(xml).each do |error| + fail Exception.new, error.to_s + end end - res = parse_response(server.send_request(read_body(data))) - log(read_body(data), res[:parsed]) - return res + res = parse_response(server.send_request(data)) + if res + log(data, res[:parsed]) + if validate_output && @xsd + @xsd.validate(Nokogiri(res[:raw])).each do |error| + fail Exception.new, error.to_s + end + end + return res + end rescue => e e end @@ -127,7 +139,7 @@ module Epp xml_params = defaults.deep_merge(xml_params) - epp_xml = EppXml::Domain.new(cl_trid: '') + epp_xml = EppXml::Domain.new(cl_trid: false) epp_xml.info(xml_params) end From 5953d3e5ea37fe4df3ceae36f09ef64c09e05f99 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 29 May 2015 10:43:48 +0300 Subject: [PATCH 013/174] Remove xml type from epp_request call #2660 --- spec/epp/session_spec.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index cdc36d2ee..b8a0d6c21 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -24,7 +24,7 @@ describe 'EPP Session', epp: true do it 'does not log in with invalid user' do wrong_user = @epp_xml.session.login(clID: { value: 'wrong-user' }, pw: { value: 'ghyt9e4fu' }) - response = epp_plain_request(wrong_user, :xml) + response = epp_plain_request(wrong_user) response[:msg].should == 'Authentication error; server closing connection' response[:result_code].should == '2501' response[:clTRID].should == 'ABC-12345' @@ -35,14 +35,14 @@ describe 'EPP Session', epp: true do Fabricate(:api_user, username: 'inactive-user', active: false, registrar: @registrar) inactive = @epp_xml.session.login(clID: { value: 'inactive-user' }, pw: { value: 'ghyt9e4fu' }) - response = epp_plain_request(inactive, :xml) + response = epp_plain_request(inactive) response[:msg].should == 'Authentication error; server closing connection' response[:result_code].should == '2501' end it 'prohibits further actions unless logged in' do @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-1.0.xsd')) - response = epp_plain_request(@epp_xml.domain.info(name: { value: 'test.ee' }), :xml) + response = epp_plain_request(@epp_xml.domain.info(name: { value: 'test.ee' })) response[:msg].should == 'You need to login first.' response[:result_code].should == '2002' response[:clTRID].should == 'ABC-12345' @@ -51,13 +51,13 @@ describe 'EPP Session', epp: true do it 'should not have clTRID in response if client does not send it' do epp_xml_no_cltrid = EppXml.new(cl_trid: false) wrong_user = epp_xml_no_cltrid.session.login(clID: { value: 'wrong-user' }, pw: { value: 'ghyt9e4fu' }) - response = epp_plain_request(wrong_user, :xml) + response = epp_plain_request(wrong_user) response[:clTRID].should be_nil end context 'with valid user' do it 'logs in epp user' do - response = epp_plain_request(@login_xml_cache, :xml) + response = epp_plain_request(@login_xml_cache) response[:msg].should == 'Command completed successfully' response[:result_code].should == '1000' response[:clTRID].should == 'ABC-12345' @@ -69,12 +69,12 @@ describe 'EPP Session', epp: true do end it 'does not log in twice' do - response = epp_plain_request(@login_xml_cache, :xml) + response = epp_plain_request(@login_xml_cache) response[:msg].should == 'Command completed successfully' response[:result_code].should == '1000' response[:clTRID].should == 'ABC-12345' - response = epp_plain_request(@login_xml_cache, :xml) + response = epp_plain_request(@login_xml_cache) response[:msg].should match(/Already logged in. Use/) response[:result_code].should == '2002' @@ -86,10 +86,10 @@ describe 'EPP Session', epp: true do it 'logs out epp user' do c = EppSession.count - epp_plain_request(@login_xml_cache, :xml) + epp_plain_request(@login_xml_cache) EppSession.count.should == c + 1 - response = epp_plain_request(@epp_xml.session.logout, :xml) + response = epp_plain_request(@epp_xml.session.logout) response[:msg].should == 'Command completed successfully; ending session' response[:result_code].should == '1500' @@ -102,7 +102,7 @@ describe 'EPP Session', epp: true do clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }, newPW: { value: 'abcdefg' } - ), :xml) + )) response[:msg].should == 'Command completed successfully' response[:result_code].should == '1000' From ec2fa3532c52713ff7975393216d1e3e7d24e7a6 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 29 May 2015 15:36:39 +0300 Subject: [PATCH 014/174] Add secDNS and custom eis schemas #2660 --- doc/schemas/domain-1.0.xsd | 4 +- doc/schemas/eis-1.0.xsd | 74 +++++++++++++++++++++ doc/schemas/eppcom-1.0.xsd | 4 +- doc/schemas/secDNS-1.1.xsd | 130 +++++++++++++++++++++++++++++++++++++ spec/epp/domain_spec.rb | 35 +++++----- spec/support/epp.rb | 8 +-- 6 files changed, 231 insertions(+), 24 deletions(-) create mode 100644 doc/schemas/eis-1.0.xsd create mode 100644 doc/schemas/secDNS-1.1.xsd diff --git a/doc/schemas/domain-1.0.xsd b/doc/schemas/domain-1.0.xsd index 0774da0a8..baf63a658 100644 --- a/doc/schemas/domain-1.0.xsd +++ b/doc/schemas/domain-1.0.xsd @@ -14,6 +14,8 @@ + + @@ -46,7 +48,7 @@ minOccurs="0"/> - + diff --git a/doc/schemas/eis-1.0.xsd b/doc/schemas/eis-1.0.xsd new file mode 100644 index 000000000..390c45579 --- /dev/null +++ b/doc/schemas/eis-1.0.xsd @@ -0,0 +1,74 @@ + + + + + + EIS Extensible Provisioning Protocol v1.0 + extension schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/schemas/eppcom-1.0.xsd b/doc/schemas/eppcom-1.0.xsd index d6ef94b24..9d022b458 100644 --- a/doc/schemas/eppcom-1.0.xsd +++ b/doc/schemas/eppcom-1.0.xsd @@ -53,7 +53,7 @@ Abstract client and object identifier type. - + @@ -102,4 +102,4 @@ Transfer status identifiers. - \ No newline at end of file + diff --git a/doc/schemas/secDNS-1.1.xsd b/doc/schemas/secDNS-1.1.xsd new file mode 100644 index 000000000..e9fe3f65a --- /dev/null +++ b/doc/schemas/secDNS-1.1.xsd @@ -0,0 +1,130 @@ + + + + + + Extensible Provisioning Protocol v1.0 + domain name extension schema + for provisioning DNS security (DNSSEC) extensions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 0440e6995..40f628558 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' describe 'EPP Domain', epp: true do before(:all) do + @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-1.0.xsd')) @epp_xml = EppXml.new(cl_trid: 'ABC-12345') @registrar1 = Fabricate(:registrar1, code: 'REGDOMAIN1') @registrar2 = Fabricate(:registrar2, code: 'REGDOMAIN2') @@ -716,7 +717,7 @@ describe 'EPP Domain', epp: true do }, 'query', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -760,7 +761,7 @@ describe 'EPP Domain', epp: true do }, 'query', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -838,7 +839,7 @@ describe 'EPP Domain', epp: true do }, 'query', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1183,7 +1184,7 @@ describe 'EPP Domain', epp: true do }, 'approve', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1219,7 +1220,7 @@ describe 'EPP Domain', epp: true do }, 'reject', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1253,7 +1254,7 @@ describe 'EPP Domain', epp: true do }, 'approve', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1274,7 +1275,7 @@ describe 'EPP Domain', epp: true do }, 'query', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1293,7 +1294,7 @@ describe 'EPP Domain', epp: true do }, 'query', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1319,7 +1320,7 @@ describe 'EPP Domain', epp: true do }, 'query', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1341,7 +1342,7 @@ describe 'EPP Domain', epp: true do }, 'approve', { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1366,7 +1367,7 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(domain_update_xml(xml_params, {}, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1395,7 +1396,7 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(domain_update_xml(xml_params, {}, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1426,7 +1427,7 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(domain_update_xml(xml_params, {}, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1616,7 +1617,7 @@ describe 'EPP Domain', epp: true do { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -2085,7 +2086,7 @@ describe 'EPP Domain', epp: true do }, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -2105,7 +2106,7 @@ describe 'EPP Domain', epp: true do }, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -2123,7 +2124,7 @@ describe 'EPP Domain', epp: true do }, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] diff --git a/spec/support/epp.rb b/spec/support/epp.rb index 9673b8db7..5e9847d48 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -188,7 +188,7 @@ module Epp custom_params = { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -231,7 +231,7 @@ module Epp epp_xml.create(xml_params, {}, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -272,7 +272,7 @@ module Epp custom_params = { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -316,7 +316,7 @@ module Epp custom_params = { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] From 1fde3884bde1ee6d2618d64360a14802f10df9dc Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 29 May 2015 15:44:59 +0300 Subject: [PATCH 015/174] Fix contact and ns tests #2660 --- spec/epp/domain_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 40f628558..441c55ac1 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -199,7 +199,7 @@ describe 'EPP Domain', epp: true do end it 'does not create domain without contacts and registrant' do - xml = domain_create_xml(contacts: [], registrant: false) + xml = domain_create_xml(_anonymus: [], registrant: false) response = epp_plain_request(xml, :xml) response[:results][0][:result_code].should == '2003' @@ -208,8 +208,8 @@ describe 'EPP Domain', epp: true do end it 'does not create domain without nameservers' do - xml = domain_create_xml(ns: []) - response = epp_plain_request(xml, :xml) + xml = domain_create_xml(ns: nil) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Required parameter missing: create > create > ns [ns]' From bd53db2040e3895052d3b4619afb2ec354e624e0 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 29 May 2015 15:56:04 +0300 Subject: [PATCH 016/174] Add day support to period in schema #2660 --- app/models/domain.rb | 4 ++-- doc/schemas/domain-1.0.xsd | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/domain.rb b/app/models/domain.rb index 3355469f1..d428bb447 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -117,7 +117,7 @@ class Domain < ActiveRecord::Base validate :validate_nameserver_ips - attr_accessor :registrant_typeahead, :update_me, :deliver_emails, + attr_accessor :registrant_typeahead, :update_me, :deliver_emails, :epp_pending_update, :epp_pending_delete def subordinate_nameservers @@ -250,7 +250,7 @@ class Domain < ActiveRecord::Base def validate_period return unless period.present? if period_unit == 'd' - valid_values = %w(365 366 710 712 1065 1068) + valid_values = %w(365 730 1095) elsif period_unit == 'm' valid_values = %w(12 24 36) else diff --git a/doc/schemas/domain-1.0.xsd b/doc/schemas/domain-1.0.xsd index baf63a658..c78bdbd45 100644 --- a/doc/schemas/domain-1.0.xsd +++ b/doc/schemas/domain-1.0.xsd @@ -64,7 +64,7 @@ - + @@ -72,6 +72,7 @@ + From 80e4fe0529a5f223ef37721129a76891b968f6bd Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 29 May 2015 17:04:20 +0300 Subject: [PATCH 017/174] Spec comment update, #2557 --- spec/epp/domain_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index f222f5abb..f9d355482 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -1406,7 +1406,7 @@ describe 'EPP Domain', epp: true do d = Domain.last - d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update, because pending + d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update d.auth_info.should == existing_pw d.pending_update?.should == true end @@ -1447,7 +1447,7 @@ describe 'EPP Domain', epp: true do d = Domain.last - d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update, because pending + d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update d.auth_info.should == existing_pw d.nameservers.size == 3 d.pending_update?.should == false @@ -1482,7 +1482,7 @@ describe 'EPP Domain', epp: true do d = Domain.find(domain_id) - d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update, because pending + d.registrant_code.should_not == 'FIXED:CITIZEN_1234' # should not update d.auth_info.should == existing_pw d.nameservers.size.should == 0 d.pending_update?.should == false From ed44238ec5e586a3a6a1c7ebbd14640cd8beeddc Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 29 May 2015 17:08:58 +0300 Subject: [PATCH 018/174] Allow specifying 'verified' attribute #2660 --- doc/schemas/domain-1.0.xsd | 22 +++++++++++++++++++--- doc/schemas/eppcom-1.0.xsd | 1 - spec/epp/domain_spec.rb | 6 +++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/doc/schemas/domain-1.0.xsd b/doc/schemas/domain-1.0.xsd index c78bdbd45..9ce83db8d 100644 --- a/doc/schemas/domain-1.0.xsd +++ b/doc/schemas/domain-1.0.xsd @@ -241,12 +241,28 @@ Allow the registrant value to be nullified by changing the minLength restriction to "0". --> - + + + + + + + + + + - - + + + + + + + + + + @@ -94,7 +95,7 @@ --> - + - - + minOccurs="0"/> + + @@ -117,8 +117,7 @@ minOccurs="0"/> - + @@ -148,21 +147,6 @@ - - - - - - - - - - - - @@ -240,8 +224,6 @@ minOccurs="0"/> - @@ -331,8 +313,6 @@ minOccurs="0"/> - diff --git a/doc/schemas/eis-1.0.xsd b/doc/schemas/eis-1.0.xsd index 390c45579..98a73caf6 100644 --- a/doc/schemas/eis-1.0.xsd +++ b/doc/schemas/eis-1.0.xsd @@ -26,8 +26,8 @@ - + @@ -55,10 +55,11 @@ - + + + + + + + + diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 02540e109..c57680845 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' describe 'EPP Contact', epp: true do before :all do + @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-1.0.xsd')) @registrar1 = Fabricate(:registrar1) @registrar2 = Fabricate(:registrar2) @epp_xml = EppXml::Contact.new(cl_trid: 'ABC-12345') @@ -15,7 +16,7 @@ describe 'EPP Contact', epp: true do @extension = { legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } }, ident: { @@ -31,8 +32,10 @@ describe 'EPP Contact', epp: true do extension = @extension if extension.blank? defaults = { + id: nil, postalInfo: { name: { value: 'John Doe' }, + org: nil, addr: { street: { value: '123 Example' }, city: { value: 'Tallinn' }, @@ -48,7 +51,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request xml is missing' do - response = epp_plain_request(@epp_xml.create, :xml) + response = epp_plain_request(@epp_xml.create, validate_input: false) response[:results][0][:msg].should == 'Required parameter missing: create > create > postalInfo > name [name]' response[:results][1][:msg].should == @@ -103,7 +106,7 @@ describe 'EPP Contact', epp: true do it 'successfully saves ident type' do extension = { legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } }, ident: { @@ -205,7 +208,7 @@ describe 'EPP Contact', epp: true do end it 'should generate server id when id is empty' do - response = create_request({ id: { value: '' } }) + response = create_request({ id: nil }) response[:msg].should == 'Command completed successfully' response[:result_code].should == '1000' @@ -381,7 +384,7 @@ describe 'EPP Contact', epp: true do it 'should update ident' do extension = { legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } }, ident: { diff --git a/t b/t new file mode 100644 index 000000000..fc3482031 --- /dev/null +++ b/t @@ -0,0 +1,195 @@ +diff --git a/doc/schemas/contact-1.0.xsd b/doc/schemas/contact-1.0.xsd +index dc2b366..9fa665a 100644 +--- a/doc/schemas/contact-1.0.xsd ++++ b/doc/schemas/contact-1.0.xsd +@@ -12,6 +12,7 @@ + --> +  +  ++   +  +  +  +@@ -94,7 +95,7 @@ + --> +  +  +-  ++   +  +  +  +  +-  +-  ++ minOccurs="0"/>  ++   ++  +  +  +  +@@ -117,8 +117,7 @@ + minOccurs="0"/> +  +  +-  ++   +  +  +  +@@ -148,21 +147,6 @@ +  +  +  +-  +-  +-  +-  +-  +-  +-  +-  +-  +-  +-  +- +  +  +@@ -240,8 +224,6 @@ + minOccurs="0"/> +  +-  +  +  +  +@@ -331,8 +313,6 @@ + minOccurs="0"/> +  +-  +  +  +  +diff --git a/doc/schemas/eis-1.0.xsd b/doc/schemas/eis-1.0.xsd +index 390c455..98a73ca 100644 +--- a/doc/schemas/eis-1.0.xsd ++++ b/doc/schemas/eis-1.0.xsd +@@ -26,8 +26,8 @@ +  +  +- ++  +  +  +  +@@ -55,10 +55,11 @@ +  +  +  +-  ++  ++ ++  ++  ++  ++  ++  ++  +  +diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb +index 02540e1..c576808 100644 +--- a/spec/epp/contact_spec.rb ++++ b/spec/epp/contact_spec.rb +@@ -2,6 +2,7 @@ require 'rails_helper' +  + describe 'EPP Contact', epp: true do + before :all do ++ @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-1.0.xsd')) + @registrar1 = Fabricate(:registrar1) + @registrar2 = Fabricate(:registrar2) + @epp_xml = EppXml::Contact.new(cl_trid: 'ABC-12345') +@@ -15,7 +16,7 @@ describe 'EPP Contact', epp: true do +  + @extension = { + legalDocument: { +- value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', ++ value: 'dGVzdCBmYWlsCg==', + attrs: { type: 'pdf' } + }, + ident: { +@@ -31,8 +32,10 @@ describe 'EPP Contact', epp: true do + extension = @extension if extension.blank? +  + defaults = { ++ id: nil, + postalInfo: { + name: { value: 'John Doe' }, ++ org: nil, + addr: { + street: { value: '123 Example' }, + city: { value: 'Tallinn' }, +@@ -48,7 +51,7 @@ describe 'EPP Contact', epp: true do + end +  + it 'fails if request xml is missing' do +- response = epp_plain_request(@epp_xml.create, :xml) ++ response = epp_plain_request(@epp_xml.create, validate_input: false) + response[:results][0][:msg].should == + 'Required parameter missing: create > create > postalInfo > name [name]' + response[:results][1][:msg].should == +@@ -103,7 +106,7 @@ describe 'EPP Contact', epp: true do + it 'successfully saves ident type' do + extension = { + legalDocument: { +- value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', ++ value: 'dGVzdCBmYWlsCg==', + attrs: { type: 'pdf' } + }, + ident: { +@@ -205,7 +208,7 @@ describe 'EPP Contact', epp: true do + end +  + it 'should generate server id when id is empty' do +- response = create_request({ id: { value: '' } }) ++ response = create_request({ id: nil }) +  + response[:msg].should == 'Command completed successfully' + response[:result_code].should == '1000' +@@ -381,7 +384,7 @@ describe 'EPP Contact', epp: true do + it 'should update ident' do + extension = { + legalDocument: { +- value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', ++ value: 'dGVzdCBmYWlsCg==', + attrs: { type: 'pdf' } + }, + ident: { From af2e9c2d9e7d4d5606318cae230ed0edf44437df Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 1 Jun 2015 17:08:00 +0300 Subject: [PATCH 033/174] Remove redundant file #2660 --- t | 195 -------------------------------------------------------------- 1 file changed, 195 deletions(-) delete mode 100644 t diff --git a/t b/t deleted file mode 100644 index fc3482031..000000000 --- a/t +++ /dev/null @@ -1,195 +0,0 @@ -diff --git a/doc/schemas/contact-1.0.xsd b/doc/schemas/contact-1.0.xsd -index dc2b366..9fa665a 100644 ---- a/doc/schemas/contact-1.0.xsd -+++ b/doc/schemas/contact-1.0.xsd -@@ -12,6 +12,7 @@ - --> -  -  -+   -  -  -  -@@ -94,7 +95,7 @@ - --> -  -  --  -+   -  -  -  -  --  --  -+ minOccurs="0"/>  -+   -+  -  -  -  -@@ -117,8 +117,7 @@ - minOccurs="0"/> -  -  --  -+   -  -  -  -@@ -148,21 +147,6 @@ -  -  -  --  --  --  --  --  --  --  --  --  --  --  -- -  -  -@@ -240,8 +224,6 @@ - minOccurs="0"/> -  --  -  -  -  -@@ -331,8 +313,6 @@ - minOccurs="0"/> -  --  -  -  -  -diff --git a/doc/schemas/eis-1.0.xsd b/doc/schemas/eis-1.0.xsd -index 390c455..98a73ca 100644 ---- a/doc/schemas/eis-1.0.xsd -+++ b/doc/schemas/eis-1.0.xsd -@@ -26,8 +26,8 @@ -  -  -- -+  -  -  -  -@@ -55,10 +55,11 @@ -  -  -  --  -+  -+ -+  -+  -+  -+  -+  -+  -  -diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb -index 02540e1..c576808 100644 ---- a/spec/epp/contact_spec.rb -+++ b/spec/epp/contact_spec.rb -@@ -2,6 +2,7 @@ require 'rails_helper' -  - describe 'EPP Contact', epp: true do - before :all do -+ @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-1.0.xsd')) - @registrar1 = Fabricate(:registrar1) - @registrar2 = Fabricate(:registrar2) - @epp_xml = EppXml::Contact.new(cl_trid: 'ABC-12345') -@@ -15,7 +16,7 @@ describe 'EPP Contact', epp: true do -  - @extension = { - legalDocument: { -- value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', -+ value: 'dGVzdCBmYWlsCg==', - attrs: { type: 'pdf' } - }, - ident: { -@@ -31,8 +32,10 @@ describe 'EPP Contact', epp: true do - extension = @extension if extension.blank? -  - defaults = { -+ id: nil, - postalInfo: { - name: { value: 'John Doe' }, -+ org: nil, - addr: { - street: { value: '123 Example' }, - city: { value: 'Tallinn' }, -@@ -48,7 +51,7 @@ describe 'EPP Contact', epp: true do - end -  - it 'fails if request xml is missing' do -- response = epp_plain_request(@epp_xml.create, :xml) -+ response = epp_plain_request(@epp_xml.create, validate_input: false) - response[:results][0][:msg].should == - 'Required parameter missing: create > create > postalInfo > name [name]' - response[:results][1][:msg].should == -@@ -103,7 +106,7 @@ describe 'EPP Contact', epp: true do - it 'successfully saves ident type' do - extension = { - legalDocument: { -- value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', -+ value: 'dGVzdCBmYWlsCg==', - attrs: { type: 'pdf' } - }, - ident: { -@@ -205,7 +208,7 @@ describe 'EPP Contact', epp: true do - end -  - it 'should generate server id when id is empty' do -- response = create_request({ id: { value: '' } }) -+ response = create_request({ id: nil }) -  - response[:msg].should == 'Command completed successfully' - response[:result_code].should == '1000' -@@ -381,7 +384,7 @@ describe 'EPP Contact', epp: true do - it 'should update ident' do - extension = { - legalDocument: { -- value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', -+ value: 'dGVzdCBmYWlsCg==', - attrs: { type: 'pdf' } - }, - ident: { From 61adfbfaae5860e7e4577e407046089a14ac005d Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 1 Jun 2015 17:26:25 +0300 Subject: [PATCH 034/174] Fix contact tests #2660 --- spec/epp/contact_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index c57680845..193e9041a 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -44,6 +44,7 @@ describe 'EPP Contact', epp: true do } }, voice: { value: '+372.1234567' }, + fax: nil, email: { value: 'test@example.example' } } create_xml = @epp_xml.create(defaults.deep_merge(overwrites), extension) @@ -280,7 +281,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request is invalid' do - response = epp_plain_request(@epp_xml.update, :xml) + response = epp_plain_request(@epp_xml.update, validate_input: false) response[:results][0][:msg].should == 'Required parameter missing: add, rem or chg' From c1962331a561f983d0fea5d5509082e0197e4111 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 1 Jun 2015 17:34:32 +0300 Subject: [PATCH 035/174] Move authInfo to chg block #2660 --- spec/epp/contact_spec.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 193e9041a..234acf775 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -261,12 +261,13 @@ describe 'EPP Contact', epp: true do defaults = { id: { value: 'asd123123er' }, - authInfo: { pw: { value: 'password' } }, chg: { postalInfo: { name: { value: 'John Doe Edited' } }, voice: { value: '+372.7654321' }, + fax: nil, + authInfo: { pw: { value: 'password' } }, email: { value: 'edited@example.example' }, disclose: { value: { @@ -489,21 +490,21 @@ describe 'EPP Contact', epp: true do it 'should honor chg value over add value when both changes same attribute' do xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, - authInfo: { pw: { value: 'password' } }, - chg: { - voice: { value: '+372.2222222222222' } - }, add: { voice: { value: '+372.11111111111' } + }, + chg: { + voice: { value: '+372.222222222222' }, + authInfo: { pw: { value: 'password' } } } }) - response = epp_plain_request(xml, :xml) + response = epp_plain_request(xml, validate_input: false) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' contact = Contact.find_by(code: 'FIRST0:SH8013') - contact.phone.should == '+372.2222222222222' + contact.phone.should == '+372.222222222222' contact.update_attribute(:phone, '+372.7654321') # restore default value end From 298f382cc03e19739c9a61228d2f3c1788b3bb97 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 1 Jun 2015 17:40:58 +0300 Subject: [PATCH 036/174] Remove postal types, disclosure #2660 --- doc/schemas/contact-1.0.xsd | 3 +-- spec/epp/contact_spec.rb | 8 +------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/doc/schemas/contact-1.0.xsd b/doc/schemas/contact-1.0.xsd index 9fa665a88..3f4dc026d 100644 --- a/doc/schemas/contact-1.0.xsd +++ b/doc/schemas/contact-1.0.xsd @@ -236,8 +236,7 @@ - + - + diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 4261cfd3e..eac12a698 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -753,7 +753,7 @@ describe 'EPP Contact', epp: true do it 'should not delete when not owner with wrong password' do login_as :registrar2 do - response = delete_request({ authInfo: { value: 'wrong password' } }) + response = delete_request({ authInfo: { pw: { value: 'wrong password' } } }) response[:msg].should == 'Authorization error' response[:result_code].should == '2201' response[:results].count.should == 1 From b1cec9007ad38f9108bfc36b7fc6785eb9a0279c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 2 Jun 2015 13:14:56 +0300 Subject: [PATCH 044/174] Rearrange contact info response fields #2660 --- app/models/contact.rb | 6 +++++- app/views/epp/contacts/info.xml.builder | 25 ++++++++++++++++--------- spec/epp/contact_spec.rb | 11 ++++++----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 34d3c53ae..ecb3b7f20 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -84,6 +84,10 @@ class Contact < ActiveRecord::Base end end + def roid + "EIS-#{id}" + end + def to_s name || '[no name]' end @@ -132,7 +136,7 @@ class Contact < ActiveRecord::Base # custom code from client # add prefix when needed - if code.present? + if code.present? prefix, *custom_code = code.split(':') code = custom_code.join(':') if prefix == registrar.code end diff --git a/app/views/epp/contacts/info.xml.builder b/app/views/epp/contacts/info.xml.builder index 82edd64b8..164ce19c0 100644 --- a/app/views/epp/contacts/info.xml.builder +++ b/app/views/epp/contacts/info.xml.builder @@ -7,10 +7,10 @@ xml.epp_head do xml.resData do xml.tag!('contact:infData', 'xmlns:contact' => 'urn:ietf:params:xml:ns:contact-1.0') do xml.tag!('contact:id', @contact.code) - if can? :view_full_info, @contact, @password - xml.tag!('contact:voice', @contact.phone) - xml.tag!('contact:email', @contact.email) - xml.tag!('contact:fax', @contact.fax) if @contact.fax.present? + xml.tag!('contact:roid', @contact.roid) + + @contact.statuses.each do |status| + xml.tag!('contact:status', s: status.value) end xml.tag!('contact:postalInfo', type: 'int') do @@ -20,15 +20,25 @@ xml.epp_head do xml.tag!('contact:addr') do xml.tag!('contact:street', @contact.street) xml.tag!('contact:city', @contact.city) - xml.tag!('contact:pc', @contact.zip) xml.tag!('contact:sp', @contact.state) + xml.tag!('contact:pc', @contact.zip) xml.tag!('contact:cc', @contact.country_code) end end end + if can? :view_full_info, @contact, @password + xml.tag!('contact:voice', @contact.phone) + xml.tag!('contact:fax', @contact.fax) if @contact.fax.present? + xml.tag!('contact:email', @contact.email) + end + xml.tag!('contact:clID', @contact.registrar.try(:name)) - xml.tag!('contact:crID', @contact.creator.try(:registrar)) + if @contact.creator.try(:registrar).blank? && Rails.env.test? + xml.tag!('contact:crID', 'TEST-CREATOR') + else + xml.tag!('contact:crID', @contact.creator.try(:registrar)) + end xml.tag!('contact:crDate', @contact.created_at.try(:iso8601)) if @contact.updated_at != @contact.created_at xml.tag!('contact:upID', @contact.updator.try(:registrar)) @@ -40,9 +50,6 @@ xml.epp_head do xml.tag!('contact:pw', @contact.auth_info) end end - @contact.statuses.each do |status| - xml.tag!('contact:status', s: status.value) - end # xml << render('/epp/contacts/disclosure_policy') end end diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index eac12a698..1d8d2fb69 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -772,7 +772,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request is invalid' do - response = epp_plain_request(@epp_xml.check, :xml) + response = epp_plain_request(@epp_xml.check, validate_input: false) response[:results][0][:msg].should == 'Required parameter missing: check > check > id [id]' response[:results][0][:result_code].should == '2003' @@ -816,17 +816,18 @@ describe 'EPP Contact', epp: true do end context 'info command' do - def info_request(overwrites = {}) + def info_request(overwrites = {}, options = {}) defaults = { id: { value: @contact.code }, authInfo: { pw: { value: @contact.auth_info } } } + xml = @epp_xml.info(defaults.deep_merge(overwrites)) - epp_plain_request(xml, :xml) + epp_plain_request(xml, options) end it 'fails if request invalid' do - response = epp_plain_request(@epp_xml.info, :xml) + response = epp_plain_request(@epp_xml.info, validate_input: false) response[:results][0][:msg].should == 'Required parameter missing: info > info > id [id]' response[:results][0][:result_code].should == '2003' @@ -932,7 +933,7 @@ describe 'EPP Contact', epp: true do it 'returns no authorization error for wrong user and no password' do login_as :registrar2 do - response = info_request({ authInfo: { pw: { value: '' } } }) + response = info_request({ authInfo: { pw: { value: '' } } }, validate_output: false) response[:msg].should == 'Command completed successfully' response[:result_code].should == '1000' response[:results].count.should == 1 From 265568dcf30f84f573f8345a24eb7bc6b4705c73 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 2 Jun 2015 13:25:49 +0300 Subject: [PATCH 045/174] Do not validate invalid request #2660 --- db/schema.rb | 2 +- spec/epp/contact_spec.rb | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 587ef3991..3f0236f3d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -957,7 +957,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do t.text "crt" t.string "type" t.string "registrant_ident" - t.string "encrypted_password", default: "" + t.string "encrypted_password", default: "", null: false t.datetime "remember_created_at" t.integer "failed_attempts", default: 0, null: false t.datetime "locked_at" diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 68dfffdd4..ebe0d646d 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -28,7 +28,7 @@ describe 'EPP Contact', epp: true do context 'with valid user' do context 'create command' do - def create_request(overwrites = {}, extension = {}) + def create_request(overwrites = {}, extension = {}, options = {}) extension = @extension if extension.blank? defaults = { @@ -48,7 +48,7 @@ describe 'EPP Contact', epp: true do email: { value: 'test@example.example' } } create_xml = @epp_xml.create(defaults.deep_merge(overwrites), extension) - epp_plain_request(create_xml, :xml) + epp_plain_request(create_xml, options) end it 'fails if request xml is missing' do @@ -177,8 +177,8 @@ describe 'EPP Contact', epp: true do attrs: { type: 'birthday', cc: 'WRONG' } } } - response = create_request({}, extension) - response[:msg].should == + response = create_request({}, extension, validate_input: false) + response[:msg].should == 'Ident country code is not valid, should be in ISO_3166-1 alpha 2 format [ident]' response[:result_code].should == '2005' end From 941538b92426d4f520fd789ef713b0d53d7f263b Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 2 Jun 2015 13:26:38 +0300 Subject: [PATCH 046/174] Validate domain name maximum length in pynicode #2608 --- app/models/domain.rb | 1 + app/models/epp/domain.rb | 3 +- config/locales/en.yml | 2 + spec/epp/domain_spec.rb | 9 +++++ spec/models/domain_spec.rb | 80 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 1 deletion(-) diff --git a/app/models/domain.rb b/app/models/domain.rb index 1a897e150..8335d5f42 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -70,6 +70,7 @@ class Domain < ActiveRecord::Base after_save :update_whois_record validates :name_dirty, domain_name: true, uniqueness: true + validates :name_puny, length: { maximum: 66 } validates :period, numericality: { only_integer: true } validates :registrant, :registrar, presence: true diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 56e66bc7d..8da4b4d6b 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -55,7 +55,8 @@ class Epp::Domain < Domain ] ], '2005' => [ # Parameter value syntax error - [:name_dirty, :invalid, { obj: 'name', val: name_dirty }] + [:name_dirty, :invalid, { obj: 'name', val: name_dirty }], + [:name_puny, :too_long, { obj: 'name', val: name_puny }] ], '2201' => [ # Authorisation error [:auth_info, :wrong_pw] diff --git a/config/locales/en.yml b/config/locales/en.yml index 4e66c4283..954e89eeb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -64,6 +64,8 @@ en: invalid: 'Domain name is invalid' reserved: 'Domain name is reserved or restricted' taken: 'Domain name already exists' + name_puny: + too_long: 'Domain name is too long (maximum is 63 characters)' registrant: blank: 'Registrant is missing' not_found: 'Registrant not found' diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 2bb129338..80721d0d7 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -189,6 +189,15 @@ describe 'EPP Domain', epp: true do # response[:clTRID].should == 'ABC-12345' # end + it 'does not create domain longer than 63 punicode characters' do + xml = domain_create_xml(name: { value: "#{'ä' * 63}.ee" }) + + response = epp_plain_request(xml) + response[:msg].should == 'Domain name is too long (maximum is 63 characters) [name_puny]' + response[:result_code].should == '2005' + response[:clTRID].should == 'ABC-12345' + end + it 'does not create reserved domain' do xml = domain_create_xml(name: { value: '1162.ee' }) diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 741721f4e..cc6c4e257 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -226,6 +226,86 @@ describe Domain do expect(d.name_dirty).to eq('test.ee') end + it 'should be valid when name length is exatly 63 in characters' do + d = Fabricate(:domain, name: "#{'a' * 63}.ee") + d.valid? + d.errors.full_messages.should == [] + end + + it 'should not be valid when name length is longer than 63 characters' do + d = Fabricate.build(:domain, name: "#{'a' * 64}.ee") + d.valid? + d.errors.full_messages.should match_array([ + "Domain name Domain name is invalid", + "Domain name Domain name is too long (maximum is 63 characters)" + ]) + end + + it 'should not be valid when name length is longer than 63 characters' do + d = Fabricate.build(:domain, + name: "xn--4caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.ee") + d.valid? + d.errors.full_messages.should match_array([ + "Domain name Domain name is invalid", + "Domain name Domain name is too long (maximum is 63 characters)" + ]) + end + + it 'should not be valid when name length is longer than 63 punycode characters' do + d = Fabricate.build(:domain, name: "#{'ä' * 63}.ee") + d.valid? + d.errors.full_messages.should == [ + "Domain name Domain name is too long (maximum is 63 characters)" + ] + end + + it 'should not be valid when name length is longer than 63 punycode characters' do + d = Fabricate.build(:domain, name: "#{'ä' * 64}.ee") + d.valid? + d.errors.full_messages.should match_array([ + "Domain name Domain name is invalid", + "Domain name Domain name is too long (maximum is 63 characters)" + ]) + end + + it 'should not be valid when name length is longer than 63 punycode characters' do + d = Fabricate.build(:domain, name: "#{'ä' * 63}.pri.ee") + d.valid? + d.errors.full_messages.should match_array([ + "Domain name Domain name is too long (maximum is 63 characters)" + ]) + end + + it 'should be valid when punycode name length is not longer than 63' do + d = Fabricate.build(:domain, name: "#{'ä' * 53}.pri.ee") + d.valid? + d.errors.full_messages.should == [] + end + + it 'should be valid when punycode name length is not longer than 63' do + d = Fabricate.build(:domain, name: "#{'ä' * 57}.ee") + d.valid? + d.errors.full_messages.should == [] + end + + it 'should not be valid when name length is one pynicode' do + d = Fabricate.build(:domain, name: "xn--4ca.ee") + d.valid? + d.errors.full_messages.should == ["Domain name Domain name is invalid"] + end + + it 'should be valid when name length is two pynicodes' do + d = Fabricate.build(:domain, name: "xn--4caa.ee") + d.valid? + d.errors.full_messages.should == [] + end + + it 'should be valid when name length is two pynicodes' do + d = Fabricate.build(:domain, name: "xn--4ca0b.ee") + d.valid? + d.errors.full_messages.should == [] + end + it 'normalizes ns attrs' do d = Fabricate(:domain) d.nameservers.build(hostname: 'BLA.EXAMPLE.EE', ipv4: ' 192.168.1.1', ipv6: '1080:0:0:0:8:800:200c:417a') From eb0772e5e988f15567fe65a25de49f36dbaf9b59 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 2 Jun 2015 15:10:15 +0300 Subject: [PATCH 047/174] Domain test fixes #2660 --- spec/epp/domain_spec.rb | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 2bb129338..647f88f1d 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -1415,29 +1415,31 @@ describe 'EPP Domain', epp: true do it 'should not return action pending when changes are invalid' do existing_pw = domain.auth_info + hostnames = domain.nameservers.pluck(:hostname) + xml_params = { name: { value: domain.name }, - chg: [ - registrant: { value: 'FIXED:CITIZEN_1234' } - ], - rem: - domain.nameservers.map do |ns| - { - ns: [ + rem: [ + { + ns: + hostnames.map do |x| { hostAttr: [ - { hostName: { value: ns.hostname } } + { hostName: { value: x } } ] } - ] - } - end + end + } + ], + chg: [ + registrant: { value: 'FIXED:CITIZEN_1234' } + ] } response = epp_plain_request(domain_update_xml(xml_params, {}, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] @@ -1472,7 +1474,7 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(domain_update_xml(xml_params, {}, { _anonymus: [ legalDocument: { - value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==', + value: 'dGVzdCBmYWlsCg==', attrs: { type: 'pdf' } } ] From a2f981a5f114579e75556ab12c7fa42157818f25 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 2 Jun 2015 15:16:08 +0300 Subject: [PATCH 048/174] Validate poll frames against schema #2660 --- spec/epp/poll_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index cf585ff69..7442ff21f 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -12,6 +12,7 @@ describe 'EPP Poll', epp: true do end before(:all) do + @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/epp-1.0.xsd')) Fabricate(:api_user, username: 'registrar1', registrar: registrar1) Fabricate(:api_user, username: 'registrar2', registrar: registrar2) @@ -85,7 +86,7 @@ describe 'EPP Poll', epp: true do value: '', attrs: { op: 'bla' } }) - response = epp_plain_request(xml, :xml) + response = epp_plain_request(xml, validate_input: false) response[:msg].should == 'Attribute is invalid: op' end From c86dacb9272dc70bde1637c35ee39470fc142bc6 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 2 Jun 2015 17:34:35 +0300 Subject: [PATCH 049/174] Update epp-examples #2660 --- doc/epp-examples.md | 2139 +++++++++++++++++++++++-------------------- 1 file changed, 1163 insertions(+), 976 deletions(-) diff --git a/doc/epp-examples.md b/doc/epp-examples.md index 4d7192332..0bf3e0f27 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -1,6 +1,6 @@ # EPP REQUEST - RESPONSE EXAMPLES -GENERATED AT: 2015-05-27 10:43:23 UTC -EXAMPLE COUNT: 159 +GENERATED AT: 2015-06-02 14:33:32 UTC +EXAMPLE COUNT: 163 --- @@ -44,7 +44,7 @@ RESPONSE: ABC-12345 - ccReg-1585073425 + ccReg-6230722077 @@ -98,7 +98,7 @@ RESPONSE: ABC-12345 - ccReg-5715688008 + ccReg-2436314288 @@ -129,7 +129,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -149,19 +149,19 @@ RESPONSE: - FIRST0:34DF69A9 - 2015-05-27 10:43:25 UTC + FIRST0:BFAAF15D + 2015-06-02T14:33:33Z ABC-12345 - ccReg-8051171569 + ccReg-4530178352 ``` -### EPP Contact with valid user create command successfully saves ident type +### EPP Contact with valid user create command successfully saves ident type with legal document REQUEST: @@ -186,7 +186,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 1990-22-12 @@ -206,13 +206,13 @@ RESPONSE: - FIRST0:336265E0 - 2015-05-27 10:43:25 UTC + FIRST0:635DE0CA + 2015-06-02T14:33:33Z ABC-12345 - ccReg-5199925447 + ccReg-5498820681 @@ -243,7 +243,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -263,13 +263,13 @@ RESPONSE: - FIRST0:C852640B - 2015-05-27 10:43:25 UTC + FIRST0:ECD18A3E + 2015-06-02T14:33:33Z ABC-12345 - ccReg-7518097746 + ccReg-5765263080 @@ -300,7 +300,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -320,13 +320,13 @@ RESPONSE: - FIRST0:03344A72 - 2015-05-27 10:43:25 UTC + FIRST0:FFDB1C8C + 2015-06-02T14:33:33Z ABC-12345 - ccReg-3037699624 + ccReg-5853521848 @@ -342,6 +342,7 @@ REQUEST: + abc12345 John Doe @@ -353,12 +354,11 @@ REQUEST: +372.1234567 test@example.example - abc12345 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -379,12 +379,12 @@ RESPONSE: FIRST0:ABC12345 - 2015-05-27 10:43:25 UTC + 2015-06-02T14:33:33Z ABC-12345 - ccReg-2425066108 + ccReg-8418715972 @@ -400,6 +400,7 @@ REQUEST: + abc:ABC:12345 John Doe @@ -411,12 +412,11 @@ REQUEST: +372.1234567 test@example.example - abc:ABC:12345 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -437,12 +437,12 @@ RESPONSE: FIRST0:ABC:ABC:12345 - 2015-05-27 10:43:25 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-9903302869 + ccReg-6634701754 @@ -458,6 +458,7 @@ REQUEST: + abc 123 John Doe @@ -469,12 +470,11 @@ REQUEST: +372.1234567 test@example.example - abc 123 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -494,13 +494,13 @@ RESPONSE: ABC-12345 - ccReg-2339768655 + ccReg-9426747388 ``` -### EPP Contact with valid user create command should add registrar prefix for code when legacy prefix present +### EPP Contact with valid user create command should not saves ident type with wrong country code REQUEST: @@ -521,12 +521,62 @@ REQUEST: +372.1234567 test@example.example - CID:FIRST0:abc:ABC:NEW:12345 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + 1990-22-12 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Ident country code is not valid, should be in ISO_3166-1 alpha 2 format [ident] + + + ABC-12345 + ccReg-9000074813 + + + +``` + +### EPP Contact with valid user create command should add registrar prefix for code when legacy prefix present + +REQUEST: + +```xml + + + + + + CID:FIRST0:abc:ABC:NEW:12345 + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + + + + + dGVzdCBmYWlsCg== 37605030299 @@ -547,12 +597,12 @@ RESPONSE: FIRST0:CID:FIRST0:ABC:ABC:NEW:12345 - 2015-05-27 10:43:25 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-6869800314 + ccReg-2762778594 @@ -568,6 +618,7 @@ REQUEST: + CID:FIRST0:abc:CID:ABC:NEW:12345 John Doe @@ -579,12 +630,11 @@ REQUEST: +372.1234567 test@example.example - CID:FIRST0:abc:CID:ABC:NEW:12345 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -605,12 +655,12 @@ RESPONSE: FIRST0:CID:FIRST0:ABC:CID:ABC:NEW:12345 - 2015-05-27 10:43:25 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-5110224581 + ccReg-4333012044 @@ -626,6 +676,7 @@ REQUEST: + FIRST0:abc22 John Doe @@ -637,12 +688,11 @@ REQUEST: +372.1234567 test@example.example - FIRST0:abc22 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -663,12 +713,12 @@ RESPONSE: FIRST0:ABC22 - 2015-05-27 10:43:25 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-3526845166 + ccReg-7907073349 @@ -684,6 +734,7 @@ REQUEST: + cid2:first0:abc:ABC:11111 John Doe @@ -695,12 +746,11 @@ REQUEST: +372.1234567 test@example.example - cid2:first0:abc:ABC:11111 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -721,12 +771,12 @@ RESPONSE: FIRST0:CID2:FIRST0:ABC:ABC:11111 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-3943735784 + ccReg-5362420340 @@ -742,6 +792,7 @@ REQUEST: + CID:FIRST0 John Doe @@ -753,12 +804,11 @@ REQUEST: +372.1234567 test@example.example - CID:FIRST0 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -779,70 +829,12 @@ RESPONSE: FIRST0:CID:FIRST0 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-3812376837 - - - -``` - -### EPP Contact with valid user create command should generate server id when id is empty - -REQUEST: - -```xml - - - - - - - John Doe - - 123 Example - Tallinn - 123456 - EE - - - +372.1234567 - test@example.example - - - - - - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 37605030299 - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - FIRST0:FCCE0C37 - 2015-05-27 10:43:26 UTC - - - - ABC-12345 - ccReg-6490804956 + ccReg-5984172001 @@ -873,7 +865,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -893,13 +885,70 @@ RESPONSE: - FIRST0:1752FB11 - 2015-05-27 10:43:26 UTC + FIRST0:1AB4EF0A + 2015-06-02T14:33:34Z ABC-12345 - ccReg-4664789940 + ccReg-7374911098 + + + +``` + +### EPP Contact with valid user create command should generate server id when id is empty + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + + + + + dGVzdCBmYWlsCg== + 37605030299 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + FIRST0:506E3755 + 2015-06-02T14:33:34Z + + + + ABC-12345 + ccReg-1091018985 @@ -917,13 +966,13 @@ REQUEST: John Doe + should not save 123 Example Tallinn 123456 EE - should not save +372.1234567 test@example.example @@ -931,7 +980,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -951,7 +1000,7 @@ RESPONSE: ABC-12345 - ccReg-2217323355 + ccReg-0955782824 @@ -977,13 +1026,13 @@ REQUEST: +372.1234567 - test@example.example should not save + test@example.example - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1003,7 +1052,7 @@ RESPONSE: ABC-12345 - ccReg-2596146301 + ccReg-9064313895 @@ -1039,7 +1088,7 @@ RESPONSE: ABC-12345 - ccReg-5177160774 + ccReg-0098456941 @@ -1056,25 +1105,21 @@ REQUEST: not-exists - - password - John Doe Edited +372.7654321 edited@example.example - - - - + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1097,7 +1142,7 @@ RESPONSE: ABC-12345 - ccReg-1486161642 + ccReg-0459133757 @@ -1114,25 +1159,21 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited +372.7654321 edited@example.example - - - - + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1153,12 +1194,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-1514698242 + ccReg-4068674584 @@ -1199,12 +1240,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-0772549072 + ccReg-6371937684 @@ -1252,7 +1293,7 @@ RESPONSE: ABC-12345 - ccReg-3877274588 + ccReg-4287413368 @@ -1267,25 +1308,21 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited +372.7654321 edited@example.example - - - - + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1306,12 +1343,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-0346588044 + ccReg-3629290845 @@ -1357,7 +1394,7 @@ RESPONSE: ABC-12345 - ccReg-1836171811 + ccReg-3416539499 @@ -1405,7 +1442,7 @@ RESPONSE: ABC-12345 - ccReg-3673815346 + ccReg-6084983175 @@ -1443,7 +1480,7 @@ RESPONSE: ABC-12345 - ccReg-0819879826 + ccReg-8736173206 @@ -1489,7 +1526,7 @@ RESPONSE: ABC-12345 - ccReg-3607963168 + ccReg-5138470152 @@ -1506,25 +1543,21 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited 123213 wrong - - - - + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1547,7 +1580,7 @@ RESPONSE: ABC-12345 - ccReg-2845722155 + ccReg-3106468971 @@ -1564,26 +1597,22 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited +372.7654321 edited@example.example - - - - + + password + notpossibletoupdate - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1606,7 +1635,7 @@ RESPONSE: ABC-12345 - ccReg-9111281614 + ccReg-9681225225 @@ -1623,25 +1652,21 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited +372.7654321 edited@example.example - - - - + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 1990-22-12 @@ -1662,12 +1687,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-5675773022 + ccReg-5854801523 @@ -1684,9 +1709,6 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited @@ -1694,16 +1716,15 @@ REQUEST: +372.7654321 edited@example.example - - - - + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1723,7 +1744,7 @@ RESPONSE: ABC-12345 - ccReg-5962790806 + ccReg-5014808216 @@ -1740,26 +1761,22 @@ REQUEST: FIRST0:SH8013 - - password - John Doe Edited +372.7654321 - edited@example.example - - - - should not save + edited@example.example + + password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -1779,7 +1796,7 @@ RESPONSE: ABC-12345 - ccReg-4675099884 + ccReg-3138655440 @@ -1818,7 +1835,7 @@ RESPONSE: ABC-12345 - ccReg-1311892678 + ccReg-1202026525 @@ -1835,12 +1852,12 @@ REQUEST: FIRST0:SH8013 - - password - - + +372.11111111 - + + password + + ABC-12345 @@ -1860,12 +1877,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-5301697215 + ccReg-8482651143 @@ -1882,16 +1899,12 @@ REQUEST: FIRST0:SH8013 - - password - - - - - - example@example.ee - + + example@example.ee + + password + @@ -1914,7 +1927,7 @@ RESPONSE: ABC-12345 - ccReg-2304368720 + ccReg-0476088143 @@ -1931,15 +1944,15 @@ REQUEST: FIRST0:SH8013 - - password - - - +372.2222222222222 - +372.11111111111 + + +372.222222222222 + + password + + ABC-12345 @@ -1959,12 +1972,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-5525783094 + ccReg-2381236121 @@ -1981,12 +1994,12 @@ REQUEST: FIRST0:SH8013 - - password - - - +372.7654321 - + + + + password + + ABC-12345 @@ -2008,7 +2021,7 @@ RESPONSE: ABC-12345 - ccReg-5500267943 + ccReg-9942427692 @@ -2052,7 +2065,7 @@ RESPONSE: ABC-12345 - ccReg-0108854211 + ccReg-1923124091 @@ -2097,12 +2110,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-7179239442 + ccReg-6937138477 @@ -2147,12 +2160,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-6722651709 + ccReg-8157062513 @@ -2200,12 +2213,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-3206173115 + ccReg-7418830300 @@ -2249,12 +2262,12 @@ RESPONSE: FIRST0:SH8013 - 2015-05-27 10:43:26 UTC + 2015-06-02T14:33:34Z ABC-12345 - ccReg-6097209925 + ccReg-8725012100 @@ -2297,7 +2310,7 @@ RESPONSE: ABC-12345 - ccReg-0081608878 + ccReg-9250241677 @@ -2340,7 +2353,7 @@ RESPONSE: ABC-12345 - ccReg-8929861116 + ccReg-2809833413 @@ -2373,7 +2386,7 @@ RESPONSE: ABC-12345 - ccReg-4224986078 + ccReg-5888335261 @@ -2397,7 +2410,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -2420,7 +2433,7 @@ RESPONSE: ABC-12345 - ccReg-6695799151 + ccReg-6947253989 @@ -2436,7 +2449,7 @@ REQUEST: - FIRST0:SH002595873 + FIRST0:SH775351913 password @@ -2444,7 +2457,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -2464,7 +2477,7 @@ RESPONSE: ABC-12345 - ccReg-9877498133 + ccReg-8502485863 @@ -2480,7 +2493,7 @@ REQUEST: - FIRST0:SH085363854 + FIRST0:SH122058824 wrong password @@ -2488,7 +2501,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -2508,7 +2521,7 @@ RESPONSE: ABC-12345 - ccReg-2124046501 + ccReg-7196323268 @@ -2524,7 +2537,7 @@ REQUEST: - FIRST0:SH588117405 + FIRST0:SH648085365 ABC-12345 @@ -2543,7 +2556,7 @@ RESPONSE: ABC-12345 - ccReg-1641432006 + ccReg-6213636307 @@ -2559,7 +2572,7 @@ REQUEST: - FIRST0:SH462986476 + FIRST0:SH093153696 password @@ -2567,7 +2580,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -2587,7 +2600,7 @@ RESPONSE: ABC-12345 - ccReg-6733472504 + ccReg-1553298253 @@ -2635,7 +2648,7 @@ RESPONSE: ABC-12345 - ccReg-9593963234 + ccReg-2543150383 @@ -2649,7 +2662,7 @@ REQUEST: - FIRST0:SH345866719 + FIRST0:SH592496019 password @@ -2657,7 +2670,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -2677,7 +2690,7 @@ RESPONSE: ABC-12345 - ccReg-4321232367 + ccReg-8268301421 @@ -2723,7 +2736,7 @@ RESPONSE: ABC-12345 - ccReg-9943668816 + ccReg-7898144133 @@ -2771,7 +2784,7 @@ RESPONSE: ABC-12345 - ccReg-4143129224 + ccReg-9845535101 @@ -2785,7 +2798,7 @@ REQUEST: - FIRST0:SH1376434210 + FIRST0:SH1717284010 ABC-12345 @@ -2804,7 +2817,7 @@ RESPONSE: ABC-12345 - ccReg-2155291311 + ccReg-9590483188 @@ -2850,7 +2863,7 @@ RESPONSE: ABC-12345 - ccReg-4451657543 + ccReg-2912535335 @@ -2898,7 +2911,7 @@ RESPONSE: ABC-12345 - ccReg-5071844006 + ccReg-9456762174 @@ -2912,13 +2925,15 @@ REQUEST: - FIRST0:SH3882613511 - wrong password + FIRST0:SH7480704111 + + wrong password + - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== 37605030299 @@ -2938,7 +2953,7 @@ RESPONSE: ABC-12345 - ccReg-6382118387 + ccReg-3618211988 @@ -2984,7 +2999,7 @@ RESPONSE: ABC-12345 - ccReg-0221108510 + ccReg-2435051659 @@ -3017,7 +3032,7 @@ RESPONSE: ABC-12345 - ccReg-1250931582 + ccReg-1012922903 @@ -3064,7 +3079,7 @@ RESPONSE: ABC-12345 - ccReg-5446739255 + ccReg-9154199000 @@ -3111,7 +3126,7 @@ RESPONSE: ABC-12345 - ccReg-2438715118 + ccReg-1186568828 @@ -3144,7 +3159,7 @@ RESPONSE: ABC-12345 - ccReg-8371968302 + ccReg-0978696432 @@ -3185,7 +3200,7 @@ RESPONSE: ABC-12345 - ccReg-3188555074 + ccReg-5470784563 @@ -3224,25 +3239,26 @@ RESPONSE: FIXED:INFO-4444 - +372.12345678 - llewellyn@bernier.org + EIS-29 + Johnny Awesome Short street 11 Tallinn - 11111 + 11111 EE + +372.12345678 + aleandro@kub.info fixed registrar - - 2015-05-27 10:43:29 UTC + TEST-CREATOR + 2015-06-02T14:33:37Z password - @@ -3252,7 +3268,7 @@ RESPONSE: ABC-12345 - ccReg-2762164451 + ccReg-9026818080 @@ -3291,25 +3307,26 @@ RESPONSE: FIXED:CID:FIXED:INFO-5555 - +372.12345678 - llewellyn@bernier.org + EIS-30 + Johnny Awesome Short street 11 Tallinn - 11111 + 11111 EE + +372.12345678 + aleandro@kub.info fixed registrar - - 2015-05-27 10:43:29 UTC + TEST-CREATOR + 2015-06-02T14:33:37Z password - @@ -3319,7 +3336,7 @@ RESPONSE: ABC-12345 - ccReg-5753089221 + ccReg-6616273205 @@ -3358,25 +3375,26 @@ RESPONSE: FIRST0:INFO-IDENT - +372.12345678 - llewellyn@bernier.org + EIS-31 + Johnny Awesome Short street 11 Tallinn - 11111 + 11111 EE + +372.12345678 + aleandro@kub.info registrar1 - - 2015-05-27 10:43:29 UTC + TEST-CREATOR + 2015-06-02T14:33:37Z password - @@ -3386,7 +3404,7 @@ RESPONSE: ABC-12345 - ccReg-0873990421 + ccReg-2074917129 @@ -3402,7 +3420,7 @@ REQUEST: - FIRST0:SH762612490 + FIRST0:SH946374880 wrong-pw @@ -3424,26 +3442,27 @@ RESPONSE: - FIRST0:SH762612490 - +372.12345678 - llewellyn@bernier.org + FIRST0:SH946374880 + EIS-1 + - Liliana Crist II0 + Kurt Schimmel0 Short street 11 Tallinn - 11111 + 11111 EE + +372.12345678 + aleandro@kub.info registrar1 - - 2015-05-27 10:43:24 UTC + TEST-CREATOR + 2015-06-02T14:33:33Z password - @@ -3453,7 +3472,7 @@ RESPONSE: ABC-12345 - ccReg-8366914454 + ccReg-2944934209 @@ -3492,25 +3511,26 @@ RESPONSE: FIXED:TEST:CUSTOM:CODE - +372.12345678 - llewellyn@bernier.org + EIS-32 + - Mrs. Willard Kling15 + Freeda Kertzmann15 Short street 11 Tallinn - 11111 + 11111 EE + +372.12345678 + aleandro@kub.info fixed registrar - - 2015-05-27 10:43:29 UTC + TEST-CREATOR + 2015-06-02T14:33:37Z password - @@ -3520,7 +3540,7 @@ RESPONSE: ABC-12345 - ccReg-1094860403 + ccReg-9319680654 @@ -3568,7 +3588,7 @@ RESPONSE: ABC-12345 - ccReg-1156272733 + ccReg-5256267515 @@ -3582,7 +3602,7 @@ REQUEST: - FIRST0:SH762612490 + FIRST0:SH946374880 password @@ -3604,26 +3624,27 @@ RESPONSE: - FIRST0:SH762612490 - +372.12345678 - llewellyn@bernier.org + FIRST0:SH946374880 + EIS-1 + - Liliana Crist II0 + Kurt Schimmel0 Short street 11 Tallinn - 11111 + 11111 EE + +372.12345678 + aleandro@kub.info registrar1 - - 2015-05-27 10:43:24 UTC + TEST-CREATOR + 2015-06-02T14:33:33Z password - @@ -3633,7 +3654,7 @@ RESPONSE: ABC-12345 - ccReg-8181550058 + ccReg-9855190337 @@ -3679,7 +3700,7 @@ RESPONSE: ABC-12345 - ccReg-6586282287 + ccReg-7982342225 @@ -3727,7 +3748,7 @@ RESPONSE: ABC-12345 - ccReg-2861885021 + ccReg-7845786975 @@ -3741,7 +3762,7 @@ REQUEST: - FIRST0:SH762612490 + FIRST0:SH946374880 wrong-pw @@ -3763,7 +3784,7 @@ RESPONSE: ABC-12345 - ccReg-0042572211 + ccReg-8286790305 @@ -3809,7 +3830,7 @@ RESPONSE: ABC-12345 - ccReg-4742331049 + ccReg-7742830004 @@ -3857,7 +3878,7 @@ RESPONSE: ABC-12345 - ccReg-6748839643 + ccReg-1203730643 @@ -3871,7 +3892,7 @@ REQUEST: - FIRST0:SH762612490 + FIRST0:SH946374880 @@ -3893,19 +3914,20 @@ RESPONSE: - FIRST0:SH762612490 + FIRST0:SH946374880 + EIS-1 + - Liliana Crist II0 + Kurt Schimmel0 registrar1 - - 2015-05-27 10:43:24 UTC - + TEST-CREATOR + 2015-06-02T14:33:33Z ABC-12345 - ccReg-8839721470 + ccReg-9164005912 @@ -3951,45 +3973,7 @@ RESPONSE: ABC-12345 - ccReg-0850650289 - - - -``` - -### EPP Contact with valid user renew command returns 2101-unimplemented command - -REQUEST: - -```xml - - - - - - info-4444 - - 2fooBAR - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Unimplemented command - - - ABC-12345 - ccReg-8524752910 + ccReg-6014474598 @@ -4035,7 +4019,7 @@ RESPONSE: ABC-12345 - ccReg-5841042302 + ccReg-3586501704 @@ -4051,7 +4035,7 @@ REQUEST: - example70096036052024755.ee + example97979453077790513.ee 1 @@ -4079,7 +4063,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4107,7 +4091,7 @@ RESPONSE: ABC-12345 - ccReg-6329567919 + ccReg-8936253286 @@ -4151,7 +4135,7 @@ RESPONSE: ABC-12345 - ccReg-1727549112 + ccReg-3102704443 @@ -4167,7 +4151,7 @@ REQUEST: - example18875779892898751.ee + example48653744161833001.ee 1 @@ -4195,7 +4179,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4214,14 +4198,14 @@ RESPONSE: - example18875779892898751.ee - 2015-05-27 10:43:30 UTC - 2016-05-27 00:00:00 UTC + example48653744161833001.ee + 2015-06-02T14:33:38Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-7138232020 + ccReg-9286293243 @@ -4237,7 +4221,7 @@ REQUEST: - example16518501250481074.ee + example66817551944190561.ee 1 @@ -4257,7 +4241,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4276,14 +4260,14 @@ RESPONSE: - example16518501250481074.ee - 2015-05-27 10:43:30 UTC - 2016-05-27 00:00:00 UTC + example66817551944190561.ee + 2015-06-02T14:33:38Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-6949714810 + ccReg-6995988129 @@ -4299,14 +4283,14 @@ REQUEST: - example34657545915229578.ee + example82402742861508907.ee 1 - ns1.example34657545915229578.ee + ns1.example82402742861508907.ee - ns2.example34657545915229578.ee + ns2.example82402742861508907.ee FIXED:CITIZEN_1234 @@ -4325,7 +4309,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4344,7 +4328,70 @@ RESPONSE: ABC-12345 - ccReg-3705921440 + ccReg-9037419208 + + + +``` + +### EPP Domain with citizen as a registrant does not create domain longer than 63 punicode characters + +REQUEST: + +```xml + + + + + + äääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääää.ee + 1 + + + ns1.example.net + 192.0.2.2 + 1080:0:0:0:8:800:200C:417A + + + ns2.example.net + + + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 + + + + + + 257 + 3 + 5 + AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Domain name is too long (maximum is 63 characters) [name_puny] + + + ABC-12345 + ccReg-3085886901 @@ -4388,7 +4435,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4410,7 +4457,7 @@ RESPONSE: ABC-12345 - ccReg-3665167833 + ccReg-7084968793 @@ -4426,7 +4473,7 @@ REQUEST: - example95948665035556904.ee + example13970338235947248.ee 1 @@ -4438,10 +4485,6 @@ REQUEST: ns2.example.net - FIXED:SH8013 - FIXED:SH8013 - FIXED:SH801333 - @@ -4454,7 +4497,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4473,7 +4516,7 @@ RESPONSE: ABC-12345 - ccReg-2552697936 + ccReg-9708640722 @@ -4489,9 +4532,8 @@ REQUEST: - example48967884144781787.ee + example36404812133760036.ee 1 - FIXED:CITIZEN_1234 FIXED:SH8013 FIXED:SH8013 @@ -4508,7 +4550,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4530,7 +4572,7 @@ RESPONSE: ABC-12345 - ccReg-9940643139 + ccReg-6232255185 @@ -4546,7 +4588,7 @@ REQUEST: - example26199879111999630.ee + example64818663597612903.ee 1 @@ -4608,7 +4650,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4627,7 +4669,7 @@ RESPONSE: ABC-12345 - ccReg-9523508089 + ccReg-0166668620 @@ -4643,7 +4685,7 @@ REQUEST: - example67443327025915260.ee + example466056723821534.ee 1 @@ -4669,7 +4711,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4697,7 +4739,7 @@ RESPONSE: ABC-12345 - ccReg-1674811016 + ccReg-6405494345 @@ -4713,7 +4755,7 @@ REQUEST: - example4862326639681440.ee + example99592330630112280.ee 1 ns1.example.ee @@ -4735,7 +4777,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4754,7 +4796,7 @@ RESPONSE: ABC-12345 - ccReg-0201147447 + ccReg-8841286613 @@ -4770,7 +4812,7 @@ REQUEST: - example67163358337402331.ee + example83128312703818883.ee 1 @@ -4793,7 +4835,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4812,14 +4854,14 @@ RESPONSE: - example67163358337402331.ee - 2015-05-27 10:43:31 UTC - 2016-05-27 00:00:00 UTC + example83128312703818883.ee + 2015-06-02T14:33:39Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-8005178303 + ccReg-7686175512 @@ -4835,7 +4877,7 @@ REQUEST: - example83921540659724800.ee + example95662100754576979.ee 1 @@ -4858,7 +4900,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4886,7 +4928,7 @@ RESPONSE: ABC-12345 - ccReg-0480672774 + ccReg-8065017773 @@ -4902,7 +4944,7 @@ REQUEST: - example31168439878572805.ee + example31948540706621474.ee 1 @@ -4930,7 +4972,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -4949,14 +4991,14 @@ RESPONSE: - example31168439878572805.ee - 2015-05-27 10:43:31 UTC - 2016-05-27 00:00:00 UTC + example31948540706621474.ee + 2015-06-02T14:33:39Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-0710914199 + ccReg-6969997272 @@ -4972,7 +5014,7 @@ REQUEST: - example91174490590886314.ee + example55223163817914543.ee 367 @@ -5000,7 +5042,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5022,7 +5064,7 @@ RESPONSE: ABC-12345 - ccReg-2677386716 + ccReg-1469657787 @@ -5038,7 +5080,7 @@ REQUEST: - example91267215976498865.ee + example82050076629523994.ee 1 @@ -5078,7 +5120,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5097,14 +5139,14 @@ RESPONSE: - example91267215976498865.ee - 2015-05-27 10:43:31 UTC - 2016-05-27 00:00:00 UTC + example82050076629523994.ee + 2015-06-02T14:33:39Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-6086717774 + ccReg-1291527721 @@ -5120,7 +5162,7 @@ REQUEST: - example45325893459192952.ee + example88380998944355738.ee 1 @@ -5160,7 +5202,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5215,7 +5257,7 @@ RESPONSE: ABC-12345 - ccReg-8175538906 + ccReg-2996508750 @@ -5231,7 +5273,7 @@ REQUEST: - example15916927116711123.ee + example78024773592821660.ee 1 @@ -5265,7 +5307,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5287,7 +5329,7 @@ RESPONSE: ABC-12345 - ccReg-9219211054 + ccReg-3990884046 @@ -5303,7 +5345,7 @@ REQUEST: - example91454458242964658.ee + example62588279782335028.ee 1 @@ -5337,7 +5379,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5356,7 +5398,7 @@ RESPONSE: ABC-12345 - ccReg-9548686640 + ccReg-9057177563 @@ -5372,7 +5414,7 @@ REQUEST: - example71491564741929352.ee + example23779866043469851.ee 1 @@ -5400,7 +5442,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5419,14 +5461,14 @@ RESPONSE: - example71491564741929352.ee - 2015-05-27 10:43:32 UTC - 2016-05-27 00:00:00 UTC + example23779866043469851.ee + 2015-06-02T14:33:40Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-4235232567 + ccReg-1959065324 @@ -5442,7 +5484,7 @@ REQUEST: - example30406577928067538.ee + example90731484534199208.ee 1 @@ -5476,7 +5518,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5495,14 +5537,14 @@ RESPONSE: - example30406577928067538.ee - 2015-05-27 10:43:32 UTC - 2016-05-27 00:00:00 UTC + example90731484534199208.ee + 2015-06-02T14:33:40Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-7688480402 + ccReg-3315923078 @@ -5518,7 +5560,7 @@ REQUEST: - example63040009625343060.ee + example6010525958819346.ee 1 @@ -5552,7 +5594,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5571,7 +5613,7 @@ RESPONSE: ABC-12345 - ccReg-5582933815 + ccReg-6597744146 @@ -5587,7 +5629,7 @@ REQUEST: - example73287430336373315.ee + example14316008823537053.ee 1 @@ -5615,7 +5657,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5634,7 +5676,7 @@ RESPONSE: ABC-12345 - ccReg-4249180668 + ccReg-0772908747 @@ -5650,7 +5692,7 @@ REQUEST: - example12685922679382848.ee + example9010839918822151.ee 1 @@ -5684,7 +5726,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5703,7 +5745,7 @@ RESPONSE: ABC-12345 - ccReg-3972247485 + ccReg-1833299590 @@ -5719,7 +5761,7 @@ REQUEST: - example31407412492547028.ee + example9990759274413940.ee 1 @@ -5745,7 +5787,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5764,14 +5806,14 @@ RESPONSE: - example31407412492547028.ee - 2015-05-27 10:43:32 UTC - 2016-05-27 00:00:00 UTC + example9990759274413940.ee + 2015-06-02T14:33:40Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-4939043794 + ccReg-6732223093 @@ -5787,7 +5829,7 @@ REQUEST: - example43179409594610423.ee + example39274446147988090.ee 1 @@ -5813,7 +5855,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5832,7 +5874,7 @@ RESPONSE: ABC-12345 - ccReg-9685299222 + ccReg-6391772176 @@ -5848,7 +5890,7 @@ REQUEST: - example11348446936077523.ee + example16815979329457392.ee 1 @@ -5874,7 +5916,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5896,7 +5938,7 @@ RESPONSE: ABC-12345 - ccReg-4691511606 + ccReg-3306715686 @@ -5944,7 +5986,7 @@ RESPONSE: ABC-12345 - ccReg-0917111585 + ccReg-4123563386 @@ -5960,13 +6002,13 @@ REQUEST: domain1.ee - 7e6a4a98534e2582634758ca77ee7148 + 7e7586cd94b553f5a07d6d8aa45d644f - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -5988,15 +6030,15 @@ RESPONSE: domain1.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:32 UTC + 2015-06-02T14:33:41Z REGDOMAIN1 - 2015-05-27 10:43:32 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:41Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-3335421781 + ccReg-8723385830 @@ -6042,7 +6084,7 @@ RESPONSE: ABC-12345 - ccReg-6267499339 + ccReg-5383535423 @@ -6070,23 +6112,23 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-05-27 10:43:33 UTC - Domain transfer was approved, associated contacts are: ["REGDOMAIN2:2C52859D", "REGDOMAIN2:A464BC75"] + 2015-06-02T14:33:41Z + Domain transfer was approved, associated contacts are: ["REGDOMAIN2:758A573F", "REGDOMAIN2:ED05964C"] domain1.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:32 UTC + 2015-06-02T14:33:41Z REGDOMAIN1 - 2015-05-27 10:43:32 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:41Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-9254728904 + ccReg-2621052839 @@ -6102,13 +6144,13 @@ REQUEST: domain1.ee - 055ee8bb38b32b97e378132ff3ca916c + e6e69f7fe16e4e106d6731a4015377b0 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -6130,15 +6172,15 @@ RESPONSE: domain1.ee pending REGDOMAIN1 - 2015-05-27 10:43:33 UTC + 2015-06-02T14:33:41Z REGDOMAIN2 - 2015-05-27 11:43:33 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T15:33:41Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-0275538941 + ccReg-0830742222 @@ -6154,13 +6196,13 @@ REQUEST: domain1.ee - 055ee8bb38b32b97e378132ff3ca916c + e6e69f7fe16e4e106d6731a4015377b0 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -6182,15 +6224,15 @@ RESPONSE: domain1.ee pending REGDOMAIN1 - 2015-05-27 10:43:33 UTC + 2015-06-02T14:33:41Z REGDOMAIN2 - 2015-05-27 11:43:33 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T15:33:41Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-0757752457 + ccReg-9024073555 @@ -6236,7 +6278,7 @@ RESPONSE: ABC-12345 - ccReg-7935547078 + ccReg-9937559312 @@ -6264,7 +6306,7 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-05-27 10:43:33 UTC + 2015-06-02T14:33:41Z Transfer requested. @@ -6272,15 +6314,15 @@ RESPONSE: domain1.ee pending REGDOMAIN1 - 2015-05-27 10:43:33 UTC + 2015-06-02T14:33:41Z REGDOMAIN2 - 2015-05-27 11:43:33 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T15:33:41Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-9141426728 + ccReg-7780959753 @@ -6326,7 +6368,7 @@ RESPONSE: ABC-12345 - ccReg-6011620786 + ccReg-2246481184 @@ -6372,7 +6414,7 @@ RESPONSE: ABC-12345 - ccReg-3668445992 + ccReg-1396088307 @@ -6402,7 +6444,7 @@ RESPONSE: ABC-12345 - ccReg-3613917922 + ccReg-6864941546 @@ -6448,7 +6490,7 @@ RESPONSE: ABC-12345 - ccReg-0925120539 + ccReg-9877149049 @@ -6496,7 +6538,7 @@ RESPONSE: ABC-12345 - ccReg-6028794756 + ccReg-8299015369 @@ -6512,13 +6554,13 @@ REQUEST: domain2.ee - a3507d8fe60d7b06de6fa7ee3b7a11ad + 4b6cfd8eac3aa625abcd2701cdab992e - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -6540,15 +6582,15 @@ RESPONSE: domain2.ee pending REGDOMAIN2 - 2015-05-27 10:43:34 UTC + 2015-06-02T14:33:42Z REGDOMAIN1 - 2015-05-27 11:43:34 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T15:33:42Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-7730469220 + ccReg-7619243484 @@ -6594,7 +6636,7 @@ RESPONSE: ABC-12345 - ccReg-9035579043 + ccReg-1996107650 @@ -6640,7 +6682,7 @@ RESPONSE: ABC-12345 - ccReg-4920254507 + ccReg-0249347226 @@ -6656,13 +6698,13 @@ REQUEST: domain2.ee - a3507d8fe60d7b06de6fa7ee3b7a11ad + 4b6cfd8eac3aa625abcd2701cdab992e - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -6684,15 +6726,15 @@ RESPONSE: domain2.ee pending REGDOMAIN2 - 2015-05-27 10:43:34 UTC + 2015-06-02T14:33:42Z REGDOMAIN1 - 2015-05-27 11:43:34 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T15:33:42Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-5694613676 + ccReg-4125354250 @@ -6738,7 +6780,7 @@ RESPONSE: ABC-12345 - ccReg-5785816065 + ccReg-2686066388 @@ -6786,7 +6828,7 @@ RESPONSE: ABC-12345 - ccReg-7366349974 + ccReg-3853305583 @@ -6802,7 +6844,7 @@ REQUEST: domain3.ee - a0b72c9e75ef63d04bb9ad8715ca48fc + fbc72d17f1d36f777dae6b2b13596d78 @@ -6825,15 +6867,15 @@ RESPONSE: domain3.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:34 UTC + 2015-06-02T14:33:42Z REGDOMAIN1 - 2015-05-27 10:43:34 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:42Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-6246328390 + ccReg-3487001485 @@ -6879,7 +6921,7 @@ RESPONSE: ABC-12345 - ccReg-0391926934 + ccReg-6417869434 @@ -6927,7 +6969,7 @@ RESPONSE: ABC-12345 - ccReg-7912772234 + ccReg-1335168095 @@ -6943,7 +6985,7 @@ REQUEST: domain4.ee - b083517b9f3a926e61702411cdf0c7be + 0221135c2fb643b574986c2af1a8cb9f @@ -6966,15 +7008,15 @@ RESPONSE: domain4.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:34 UTC + 2015-06-02T14:33:43Z REGDOMAIN1 - 2015-05-27 10:43:35 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:43Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-2452237245 + ccReg-1484348708 @@ -7020,7 +7062,7 @@ RESPONSE: ABC-12345 - ccReg-5853115117 + ccReg-4456747164 @@ -7068,7 +7110,7 @@ RESPONSE: ABC-12345 - ccReg-7994647230 + ccReg-6378968609 @@ -7084,7 +7126,7 @@ REQUEST: domain5.ee - c6ac11f0a30b90e2435872b947f676bc + 8762d1f1c64594a5b80e5b1a68b5dc58 @@ -7107,15 +7149,15 @@ RESPONSE: domain5.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:35 UTC + 2015-06-02T14:33:43Z REGDOMAIN1 - 2015-05-27 10:43:35 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:43Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-8456401947 + ccReg-4043670156 @@ -7161,7 +7203,7 @@ RESPONSE: ABC-12345 - ccReg-0451125168 + ccReg-8973567200 @@ -7209,7 +7251,7 @@ RESPONSE: ABC-12345 - ccReg-9996143631 + ccReg-9166329529 @@ -7225,7 +7267,7 @@ REQUEST: domain8.ee - 15c978c4fdb8c7c8b320ff836238ff24 + 723383e28c2a831f8cd05d47a6fdae6a @@ -7248,15 +7290,15 @@ RESPONSE: domain8.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:36 UTC + 2015-06-02T14:33:44Z REGDOMAIN1 - 2015-05-27 10:43:36 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:44Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-6547163770 + ccReg-9917679448 @@ -7302,7 +7344,7 @@ RESPONSE: ABC-12345 - ccReg-8938696546 + ccReg-5483450921 @@ -7350,7 +7392,7 @@ RESPONSE: ABC-12345 - ccReg-1935599554 + ccReg-0451723771 @@ -7366,7 +7408,7 @@ REQUEST: domain9.ee - 99e7f00907374d57c7152d5a4cf6306c + c1f7bdb825982a7d1da9170ef3721274 @@ -7389,15 +7431,15 @@ RESPONSE: domain9.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:36 UTC + 2015-06-02T14:33:44Z REGDOMAIN1 - 2015-05-27 10:43:36 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:44Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-6108438709 + ccReg-9585905070 @@ -7443,7 +7485,7 @@ RESPONSE: ABC-12345 - ccReg-7842682602 + ccReg-3585610255 @@ -7491,7 +7533,7 @@ RESPONSE: ABC-12345 - ccReg-7725230435 + ccReg-2766683979 @@ -7507,7 +7549,7 @@ REQUEST: domain11.ee - 02c630c0d9e223719ccd33c01a93a81c + f6a02211d0c8ff3abdf3aa1e7b37f174 @@ -7530,15 +7572,15 @@ RESPONSE: domain11.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:37 UTC + 2015-06-02T14:33:45Z REGDOMAIN1 - 2015-05-27 10:43:37 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:45Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-0988527962 + ccReg-0499694005 @@ -7584,7 +7626,7 @@ RESPONSE: ABC-12345 - ccReg-1153070739 + ccReg-2413360344 @@ -7632,7 +7674,7 @@ RESPONSE: ABC-12345 - ccReg-1035262117 + ccReg-6430571545 @@ -7648,7 +7690,7 @@ REQUEST: domain14.ee - 8c8a24afd65fb32cbea0683f805a2394 + c1c20e74faf394a064622007e2c4e817 @@ -7671,15 +7713,15 @@ RESPONSE: domain14.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:37 UTC + 2015-06-02T14:33:45Z REGDOMAIN1 - 2015-05-27 10:43:37 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:45Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-3828737809 + ccReg-1645698502 @@ -7725,7 +7767,7 @@ RESPONSE: ABC-12345 - ccReg-6455795713 + ccReg-8777538869 @@ -7773,7 +7815,7 @@ RESPONSE: ABC-12345 - ccReg-8823340387 + ccReg-5887352110 @@ -7789,7 +7831,7 @@ REQUEST: domain15.ee - 0f81c488e43a5ff0d09d9ae2ad89534e + 8b2b1a7aad43d979486245b9d0ff473b @@ -7812,15 +7854,15 @@ RESPONSE: domain15.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:38 UTC + 2015-06-02T14:33:46Z REGDOMAIN1 - 2015-05-27 10:43:38 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:46Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-0363538601 + ccReg-9002038233 @@ -7866,7 +7908,7 @@ RESPONSE: ABC-12345 - ccReg-5923931571 + ccReg-4427386119 @@ -7914,7 +7956,7 @@ RESPONSE: ABC-12345 - ccReg-3627375804 + ccReg-4954325500 @@ -7950,7 +7992,7 @@ RESPONSE: ABC-12345 - ccReg-1686309037 + ccReg-0070482481 @@ -7996,7 +8038,7 @@ RESPONSE: ABC-12345 - ccReg-5701905644 + ccReg-0244475517 @@ -8014,13 +8056,13 @@ REQUEST: domain17.ee - 16eb001e706172697a4ae9ab2a7982d2 + 15af0f0a594f1941ebdee1c246662730 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8042,15 +8084,15 @@ RESPONSE: domain17.ee clientApproved REGDOMAIN2 - 2015-05-27 10:43:38 UTC + 2015-06-02T14:33:46Z REGDOMAIN1 - 2015-05-27 10:43:38 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:46Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-4816670665 + ccReg-0409704363 @@ -8098,7 +8140,7 @@ RESPONSE: ABC-12345 - ccReg-8804211053 + ccReg-9977243825 @@ -8114,13 +8156,13 @@ REQUEST: domain18.ee - b9d30de5879c3596d1f8a6c69a832a8a + 1acbd83c6c9bf4d5b3b5996f84ecc95e - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8139,7 +8181,7 @@ RESPONSE: ABC-12345 - ccReg-2803345752 + ccReg-2167790493 @@ -8185,7 +8227,7 @@ RESPONSE: ABC-12345 - ccReg-6778373394 + ccReg-7318846508 @@ -8201,13 +8243,13 @@ REQUEST: domain18.ee - b9d30de5879c3596d1f8a6c69a832a8a + 1acbd83c6c9bf4d5b3b5996f84ecc95e - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8229,15 +8271,15 @@ RESPONSE: domain18.ee clientRejected REGDOMAIN2 - 2015-05-27 10:43:39 UTC + 2015-06-02T14:33:47Z REGDOMAIN1 - 2015-05-27 10:43:39 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:47Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-5197335200 + ccReg-5500355407 @@ -8285,7 +8327,7 @@ RESPONSE: ABC-12345 - ccReg-5888721799 + ccReg-6363376009 @@ -8301,13 +8343,13 @@ REQUEST: domain19.ee - d41c85651d45c9289191006f559c9ec8 + a870b5d70e38d38576944360c17d9cec - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8326,7 +8368,7 @@ RESPONSE: ABC-12345 - ccReg-7064775457 + ccReg-8901648621 @@ -8372,7 +8414,7 @@ RESPONSE: ABC-12345 - ccReg-9310455244 + ccReg-1238161989 @@ -8396,7 +8438,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8415,7 +8457,7 @@ RESPONSE: ABC-12345 - ccReg-7658729961 + ccReg-7376446516 @@ -8433,13 +8475,13 @@ REQUEST: domain21.ee - 8ab45ffd3acddb71c6359404cb4c2c34 + 0d3a2916ece6b0c50896ab5d15367590 - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8458,7 +8500,7 @@ RESPONSE: ABC-12345 - ccReg-1943177997 + ccReg-3149883241 @@ -8474,7 +8516,7 @@ REQUEST: - example98769030605825402.ee + example20038696444836827.ee 98oiewslkfkd @@ -8496,7 +8538,7 @@ RESPONSE: ABC-12345 - ccReg-6324054729 + ccReg-7463389906 @@ -8544,7 +8586,7 @@ RESPONSE: ABC-12345 - ccReg-2397606336 + ccReg-5292990151 @@ -8560,13 +8602,13 @@ REQUEST: domain22.ee - e9bfcbdfeeda4465e3a5f109f2377bca + 214caf4bb5bc9d803458b69400c8072e - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8588,15 +8630,15 @@ RESPONSE: domain22.ee serverApproved REGDOMAIN2 - 2015-05-27 10:43:40 UTC + 2015-06-02T14:33:47Z REGDOMAIN1 - 2015-05-27 10:43:40 UTC - 2016-05-27 00:00:00 UTC + 2015-06-02T14:33:47Z + 2016-06-02T00:00:00Z ABC-12345 - ccReg-4954465709 + ccReg-3677521670 @@ -8612,13 +8654,13 @@ REQUEST: domain22.ee - e9bfcbdfeeda4465e3a5f109f2377bca + 214caf4bb5bc9d803458b69400c8072e - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8637,7 +8679,7 @@ RESPONSE: ABC-12345 - ccReg-5087615942 + ccReg-4802342583 @@ -8683,7 +8725,7 @@ RESPONSE: ABC-12345 - ccReg-6484511821 + ccReg-3924775811 @@ -8701,13 +8743,13 @@ REQUEST: domain23.ee - d3e0cefadeefa7f1b2868f852adf1228 + cc0c225abd7c98fe19ae72398601bb8a - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8726,7 +8768,7 @@ RESPONSE: ABC-12345 - ccReg-5156334511 + ccReg-4544248429 @@ -8751,7 +8793,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8770,7 +8812,7 @@ RESPONSE: ABC-12345 - ccReg-1610390580 + ccReg-6875798999 @@ -8795,7 +8837,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8814,7 +8856,108 @@ RESPONSE: ABC-12345 - ccReg-2809632744 + ccReg-3305778113 + + + +``` + +### EPP Domain with valid domain should not return action pending when changes are invalid + +REQUEST: + +```xml + + + + + + domain26.ee + + + + ns.bartell80.ee + + + ns.jones79.ee + + + ns.powlowski78.ee + + + + + FIXED:CITIZEN_1234 + + + + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Nameservers count must be between 2-11 [nameservers] + + + ABC-12345 + ccReg-0383550395 + + + +``` + +### EPP Domain with valid domain should not return action pending when domain itself is already invaid + +REQUEST: + +```xml + + + + + + domain27.ee + + FIXED:CITIZEN_1234 + + + + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Nameservers count must be between 2-11 [nameservers] + + + ABC-12345 + ccReg-6286875915 @@ -8830,7 +8973,7 @@ REQUEST: - domain26.ee + domain28.ee FIXED:CITIZEN_1234 @@ -8839,7 +8982,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -8858,7 +9001,7 @@ RESPONSE: ABC-12345 - ccReg-8912347187 + ccReg-8121147429 @@ -8874,7 +9017,7 @@ REQUEST: - domain27.ee + domain29.ee @@ -8927,7 +9070,7 @@ RESPONSE: ABC-12345 - ccReg-7279422608 + ccReg-8658915093 @@ -8941,7 +9084,7 @@ REQUEST: - domain27.ee + domain29.ee @@ -8991,7 +9134,7 @@ RESPONSE: ABC-12345 - ccReg-3196572742 + ccReg-8578037457 @@ -9005,7 +9148,7 @@ REQUEST: - domain27.ee + domain29.ee @@ -9094,7 +9237,7 @@ RESPONSE: ABC-12345 - ccReg-3629702536 + ccReg-7566265707 @@ -9110,10 +9253,7 @@ REQUEST: - domain28.ee - - FIXED:CITIZEN_1234 - + domain30.ee @@ -9127,6 +9267,9 @@ REQUEST: Payment overdue. + + FIXED:CITIZEN_1234 + @@ -9147,7 +9290,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -9169,7 +9312,7 @@ RESPONSE: ABC-12345 - ccReg-0035237276 + ccReg-5950602333 @@ -9183,10 +9326,7 @@ REQUEST: - domain28.ee - - FIXED:CITIZEN_1234 - + domain30.ee @@ -9200,6 +9340,9 @@ REQUEST: Payment overdue. + + FIXED:CITIZEN_1234 + @@ -9220,7 +9363,7 @@ REQUEST: - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -9239,7 +9382,7 @@ RESPONSE: ABC-12345 - ccReg-2590035754 + ccReg-7328085880 @@ -9255,7 +9398,7 @@ REQUEST: - domain29.ee + domain31.ee Payment overdue. @@ -9278,7 +9421,7 @@ RESPONSE: ABC-12345 - ccReg-0742932026 + ccReg-7227191488 @@ -9294,7 +9437,7 @@ REQUEST: - domain30.ee + domain32.ee @@ -9344,7 +9487,7 @@ RESPONSE: ABC-12345 - ccReg-5200564648 + ccReg-8437379909 @@ -9358,7 +9501,7 @@ REQUEST: - domain30.ee + domain32.ee @@ -9374,6 +9517,9 @@ REQUEST: + 256 + 3 + 254 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f @@ -9395,7 +9541,7 @@ RESPONSE: ABC-12345 - ccReg-0319078323 + ccReg-9283346447 @@ -9409,7 +9555,7 @@ REQUEST: - domain30.ee + domain32.ee @@ -9425,6 +9571,9 @@ REQUEST: + 256 + 3 + 254 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f @@ -9467,7 +9616,7 @@ RESPONSE: ABC-12345 - ccReg-1059381148 + ccReg-1720108341 @@ -9483,7 +9632,7 @@ REQUEST: - domain31.ee + domain33.ee @@ -9508,7 +9657,7 @@ RESPONSE: ABC-12345 - ccReg-5054919824 + ccReg-9356081676 @@ -9524,14 +9673,14 @@ REQUEST: - domain32.ee + domain34.ee - ns.mclaughlinauer93.ee + ns.will99.ee - FIXED:SH1132295975 + FIXED:SH1116533879 @@ -9551,7 +9700,7 @@ RESPONSE: ABC-12345 - ccReg-5215036552 + ccReg-5974789134 @@ -9565,14 +9714,14 @@ REQUEST: - domain32.ee + domain34.ee - ns.mclaughlinauer93.ee + ns.will99.ee - FIXED:SH1132295975 + FIXED:SH1116533879 @@ -9590,18 +9739,18 @@ RESPONSE: Nameserver already exists on this domain [hostname] - ns.mclaughlinauer93.ee + ns.will99.ee Contact already exists on this domain [contact_code_cache] - FIXED:SH1132295975 + FIXED:SH1116533879 ABC-12345 - ccReg-1074473944 + ccReg-8215045348 @@ -9617,7 +9766,7 @@ REQUEST: - domain33.ee + domain35.ee FIXED:CITIZEN_1234 @@ -9639,7 +9788,7 @@ RESPONSE: ABC-12345 - ccReg-6965471467 + ccReg-7276382072 @@ -9655,7 +9804,7 @@ REQUEST: - domain34.ee + domain36.ee @@ -9680,7 +9829,7 @@ RESPONSE: ABC-12345 - ccReg-9485651549 + ccReg-5601896519 @@ -9696,8 +9845,8 @@ REQUEST: - domain35.ee - 2016-05-27 + domain37.ee + 2016-06-02 1 @@ -9717,13 +9866,13 @@ RESPONSE: - domain35.ee - 2017-05-27 00:00:00 UTC + domain37.ee + 2017-06-02T00:00:00Z ABC-12345 - ccReg-2938890628 + ccReg-3668937945 @@ -9739,7 +9888,7 @@ REQUEST: - domain36.ee + domain38.ee 2200-08-07 1 @@ -9763,7 +9912,7 @@ RESPONSE: ABC-12345 - ccReg-6690551934 + ccReg-8246202320 @@ -9779,8 +9928,8 @@ REQUEST: - domain37.ee - 2016-05-27 + domain39.ee + 2016-06-02 4 @@ -9803,7 +9952,7 @@ RESPONSE: ABC-12345 - ccReg-2230915815 + ccReg-5737709562 @@ -9819,13 +9968,12 @@ REQUEST: - domain38.ee + domain40.ee 2fooBAR - ``` @@ -9841,22 +9989,23 @@ RESPONSE: - domain38.ee + domain40.ee + EIS-48 Payment overdue. - FIXED:REGISTRANT2741815436 - FIXED:SH0138863290 - FIXED:SH2076456589 + FIXED:REGISTRANT8974289838 + FIXED:SH4849477194 + FIXED:SH9764958293 - ns.gislason114.ee + ns.littlewalter120.ee 192.168.1.1 - ns.wilkinson115.ee + ns.upton121.ee 192.168.1.1 - ns.lemke116.ee + ns.stroman122.ee 192.168.1.1 @@ -9866,12 +10015,11 @@ RESPONSE: registrar1 - - 2015-05-27 10:43:43 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:43 UTC + 2015-06-02T14:33:51Z + 2015-06-02T14:33:51Z + 2016-06-02T00:00:00Z - fc35227d625b0f64334a64e79d830693 + a55da6ecdfddd94d11ec0905cb8655de @@ -9881,7 +10029,7 @@ RESPONSE: 123 3 1 - abc + 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB 257 3 @@ -9893,7 +10041,7 @@ RESPONSE: 123 3 1 - abc + 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB 0 3 @@ -9904,7 +10052,7 @@ RESPONSE: - ccReg-0824479428 + ccReg-0885097219 @@ -9918,13 +10066,12 @@ REQUEST: - domain38.ee + domain40.ee 2fooBAR - ``` @@ -9940,22 +10087,23 @@ RESPONSE: - domain38.ee + domain40.ee + EIS-48 Payment overdue. - FIXED:REGISTRANT2741815436 - FIXED:SH0138863290 - FIXED:SH2076456589 + FIXED:REGISTRANT8974289838 + FIXED:SH4849477194 + FIXED:SH9764958293 - ns.gislason114.ee + ns.littlewalter120.ee 192.168.1.1 - ns.wilkinson115.ee + ns.upton121.ee 192.168.1.1 - ns.lemke116.ee + ns.stroman122.ee 192.168.1.1 @@ -9965,12 +10113,11 @@ RESPONSE: registrar1 - - 2015-05-27 10:43:43 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:43 UTC + 2015-06-02T14:33:51Z + 2015-06-02T14:33:51Z + 2016-06-02T00:00:00Z - fc35227d625b0f64334a64e79d830693 + a55da6ecdfddd94d11ec0905cb8655de @@ -9980,7 +10127,7 @@ RESPONSE: 123 3 1 - abc + 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB 257 3 @@ -9992,7 +10139,7 @@ RESPONSE: 123 3 1 - abc + 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB 0 3 @@ -10003,7 +10150,7 @@ RESPONSE: - ccReg-2750667963 + ccReg-0658088724 @@ -10019,13 +10166,12 @@ REQUEST: - domain39.ee + domain41.ee 2fooBAR - ``` @@ -10040,7 +10186,7 @@ RESPONSE: Attribute is invalid: hosts - ccReg-0144253530 + ccReg-3142249796 @@ -10054,13 +10200,12 @@ REQUEST: - domain39.ee + domain41.ee 2fooBAR - ``` @@ -10076,35 +10221,35 @@ RESPONSE: - domain39.ee + domain41.ee + EIS-49 - FIXED:REGISTRANT3507395337 - FIXED:SH9812701792 - FIXED:SH5796684791 + FIXED:REGISTRANT9162686239 + FIXED:SH7788334096 + FIXED:SH1740525895 - ns1.domain39.ee + ns1.domain41.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A - ns2.domain39.ee + ns2.domain41.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A registrar1 - - 2015-05-27 10:43:43 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:43 UTC + 2015-06-02T14:33:52Z + 2015-06-02T14:33:52Z + 2016-06-02T00:00:00Z - fc42e6becbedb165889c19f43a2540ab + 5f736179dc1b98c7297181630045512a - ccReg-1069575583 + ccReg-3283683958 @@ -10118,13 +10263,12 @@ REQUEST: - domain39.ee + domain41.ee 2fooBAR - ``` @@ -10140,11 +10284,12 @@ RESPONSE: - domain39.ee + domain41.ee + EIS-49 - FIXED:REGISTRANT3507395337 - FIXED:SH9812701792 - FIXED:SH5796684791 + FIXED:REGISTRANT9162686239 + FIXED:SH7788334096 + FIXED:SH1740525895 ns3.test.ee @@ -10153,17 +10298,16 @@ RESPONSE: registrar1 - - 2015-05-27 10:43:43 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:43 UTC + 2015-06-02T14:33:52Z + 2015-06-02T14:33:52Z + 2016-06-02T00:00:00Z - fc42e6becbedb165889c19f43a2540ab + 5f736179dc1b98c7297181630045512a - ccReg-0643395459 + ccReg-2854509297 @@ -10177,13 +10321,12 @@ REQUEST: - domain39.ee + domain41.ee 2fooBAR - ``` @@ -10199,23 +10342,23 @@ RESPONSE: - domain39.ee + domain41.ee + EIS-49 - FIXED:REGISTRANT3507395337 - FIXED:SH9812701792 - FIXED:SH5796684791 + FIXED:REGISTRANT9162686239 + FIXED:SH7788334096 + FIXED:SH1740525895 registrar1 - - 2015-05-27 10:43:43 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:43 UTC + 2015-06-02T14:33:52Z + 2015-06-02T14:33:52Z + 2016-06-02T00:00:00Z - fc42e6becbedb165889c19f43a2540ab + 5f736179dc1b98c7297181630045512a - ccReg-3688764669 + ccReg-8226722399 @@ -10229,13 +10372,12 @@ REQUEST: - domain39.ee + domain41.ee 2fooBAR - ``` @@ -10251,19 +10393,20 @@ RESPONSE: - domain39.ee + domain41.ee + EIS-49 - FIXED:REGISTRANT3507395337 - FIXED:SH9812701792 - FIXED:SH5796684791 + FIXED:REGISTRANT9162686239 + FIXED:SH7788334096 + FIXED:SH1740525895 - ns1.domain39.ee + ns1.domain41.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A - ns2.domain39.ee + ns2.domain41.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A @@ -10274,17 +10417,16 @@ RESPONSE: registrar1 - - 2015-05-27 10:43:43 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:43 UTC + 2015-06-02T14:33:52Z + 2015-06-02T14:33:52Z + 2016-06-02T00:00:00Z - fc42e6becbedb165889c19f43a2540ab + 5f736179dc1b98c7297181630045512a - ccReg-5604815953 + ccReg-6981084869 @@ -10306,7 +10448,6 @@ REQUEST: - ``` @@ -10324,7 +10465,7 @@ RESPONSE: - ccReg-5161660847 + ccReg-1359177895 @@ -10340,13 +10481,12 @@ REQUEST: - domain40.ee + domain42.ee 2fooBAR - ``` @@ -10362,37 +10502,37 @@ RESPONSE: - domain40.ee + domain42.ee + EIS-50 - FIXED:REGISTRANT0887546238 - FIXED:SH8726482994 - FIXED:SH5179344293 + FIXED:REGISTRANT6447311340 + FIXED:SH0696214598 + FIXED:SH3579214897 - ns.renner120.ee + ns.torphyswaniawski126.ee 192.168.1.1 - ns.stiedemann121.ee + ns.runolfsson127.ee 192.168.1.1 - ns.walkermitchell122.ee + ns.pfannerstill128.ee 192.168.1.1 registrar1 - - 2015-05-27 10:43:44 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:44 UTC + 2015-06-02T14:33:52Z + 2015-06-02T14:33:52Z + 2016-06-02T00:00:00Z - 07b874494197f5d551179bde6c743dc1 + 24475eb76f7afbcbce6d58904499033c - ccReg-3483125791 + ccReg-6787531410 @@ -10440,7 +10580,7 @@ RESPONSE: ABC-12345 - ccReg-0433009755 + ccReg-5789785835 @@ -10454,13 +10594,12 @@ REQUEST: - domain41.ee + domain43.ee 2fooBAR - ``` @@ -10475,7 +10614,7 @@ RESPONSE: Authorization error - ccReg-9728706466 + ccReg-8890052432 @@ -10521,7 +10660,7 @@ RESPONSE: ABC-12345 - ccReg-3974422485 + ccReg-6132497444 @@ -10569,7 +10708,7 @@ RESPONSE: ABC-12345 - ccReg-4142452023 + ccReg-6672790066 @@ -10583,10 +10722,9 @@ REQUEST: - domain42.ee + domain44.ee - ``` @@ -10602,34 +10740,34 @@ RESPONSE: - domain42.ee + domain44.ee + EIS-52 - FIXED:REGISTRANT3430252540 - FIXED:SH3885267898 - FIXED:SH8898454097 + FIXED:REGISTRANT0437071142 + FIXED:SH96779090102 + FIXED:SH52024319101 - ns.bauch126.ee + ns.hettingerankunding132.ee 192.168.1.1 - ns.millerhudson127.ee + ns.jenkinshilll133.ee 192.168.1.1 - ns.jakubowskimacgyver128.ee + ns.moore134.ee 192.168.1.1 registrar1 - - 2015-05-27 10:43:44 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:44 UTC + 2015-06-02T14:33:52Z + 2015-06-02T14:33:52Z + 2016-06-02T00:00:00Z - ccReg-3186032703 + ccReg-5470335926 @@ -10675,7 +10813,7 @@ RESPONSE: ABC-12345 - ccReg-7433830827 + ccReg-7477648038 @@ -10723,7 +10861,7 @@ RESPONSE: ABC-12345 - ccReg-6666385262 + ccReg-0189080988 @@ -10737,13 +10875,12 @@ REQUEST: - domain43.ee + domain45.ee - caeb09c88ac3065e75384525e444b28d + 3e1fb38b022d134ee01fb5a7fd0d22bd - ``` @@ -10759,37 +10896,37 @@ RESPONSE: - domain43.ee + domain45.ee + EIS-53 - FIXED:REGISTRANT1287087941 - FIXED:SH25240842100 - FIXED:SH4103432799 + FIXED:REGISTRANT0039423743 + FIXED:SH26361564104 + FIXED:SH08557300103 - ns.murphysawayn129.ee + ns.will135.ee 192.168.1.1 - ns.parkerbailey130.ee + ns.oreilly136.ee 192.168.1.1 - ns.pagac131.ee + ns.kozey137.ee 192.168.1.1 registrar1 - - 2015-05-27 10:43:44 UTC - 2016-05-27 00:00:00 UTC - 2015-05-27 10:43:44 UTC + 2015-06-02T14:33:53Z + 2015-06-02T14:33:53Z + 2016-06-02T00:00:00Z - caeb09c88ac3065e75384525e444b28d + 3e1fb38b022d134ee01fb5a7fd0d22bd - ccReg-0149171551 + ccReg-5317920253 @@ -10835,7 +10972,7 @@ RESPONSE: ABC-12345 - ccReg-1852061545 + ccReg-8397152597 @@ -10851,12 +10988,12 @@ REQUEST: - domain44.ee + domain46.ee - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -10875,7 +11012,7 @@ RESPONSE: ABC-12345 - ccReg-2271849131 + ccReg-7041717131 @@ -10891,12 +11028,12 @@ REQUEST: - domain45.ee + domain47.ee - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -10915,7 +11052,7 @@ RESPONSE: ABC-12345 - ccReg-9476531499 + ccReg-4433625658 @@ -10931,12 +11068,12 @@ REQUEST: - domain46.ee + domain48.ee - JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== + dGVzdCBmYWlsCg== ABC-12345 @@ -10955,7 +11092,7 @@ RESPONSE: ABC-12345 - ccReg-0939566483 + ccReg-0993946563 @@ -10990,7 +11127,7 @@ RESPONSE: ABC-12345 - ccReg-9335855114 + ccReg-0059261865 @@ -11032,7 +11169,7 @@ RESPONSE: ABC-12345 - ccReg-4928370789 + ccReg-0464564986 @@ -11046,7 +11183,7 @@ REQUEST: - domain47.ee + domain49.ee ABC-12345 @@ -11066,14 +11203,14 @@ RESPONSE: - domain47.ee + domain49.ee in use ABC-12345 - ccReg-3952532476 + ccReg-9143909071 @@ -11123,7 +11260,7 @@ RESPONSE: ABC-12345 - ccReg-9733374439 + ccReg-7975888398 @@ -11170,7 +11307,7 @@ RESPONSE: ABC-12345 - ccReg-8694188647 + ccReg-2094076134 @@ -11218,7 +11355,7 @@ RESPONSE: ABC-12345 - ccReg-5192810508 + ccReg-8002054128 @@ -11233,7 +11370,7 @@ REQUEST: - domain48.ee + domain50.ee 256 3 @@ -11241,13 +11378,13 @@ REQUEST: cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 P1M13D - 1432723426 + 1433255634 ``` @@ -11261,12 +11398,12 @@ RESPONSE: Unimplemented object service - domain48.ee + domain50.ee - 1432723426 - ccReg-7694214472 + 1433255634 + ccReg-7577662278 @@ -11281,20 +11418,20 @@ REQUEST: - domain48.ee + domain50.ee 3 8 cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 Invalid Expiry - 1432723426 + 1433255634 ``` @@ -11315,8 +11452,8 @@ RESPONSE: - 1432723426 - ccReg-0640451513 + 1433255634 + ccReg-8125274982 @@ -11331,7 +11468,7 @@ REQUEST: - domain48.ee + domain50.ee 256 3 @@ -11339,13 +11476,13 @@ REQUEST: cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 Invalid Expiry - 1432723426 + 1433255634 ``` @@ -11363,8 +11500,8 @@ RESPONSE: - 1432723426 - ccReg-7577070399 + 1433255634 + ccReg-5401810171 @@ -11379,7 +11516,7 @@ REQUEST: - domain48.ee + domain50.ee 256 3 @@ -11387,13 +11524,13 @@ REQUEST: cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 Invalid Absolute - 1432723426 + 1433255634 ``` @@ -11411,8 +11548,8 @@ RESPONSE: - 1432723426 - ccReg-0078778441 + 1433255634 + ccReg-7214355118 @@ -11427,7 +11564,7 @@ REQUEST: - domain48.ee + domain50.ee 256 3 @@ -11435,14 +11572,14 @@ REQUEST: cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 P1D 2014-12-23 - 1432723426 + 1433255634 ``` @@ -11457,8 +11594,8 @@ RESPONSE: Exactly one parameter required: keyrelay > expiry > relative OR keyrelay > expiry > absolute - 1432723426 - ccReg-9000657815 + 1433255634 + ccReg-7644188011 @@ -11473,7 +11610,7 @@ REQUEST: - domain48.ee + domain50.ee 256 3 @@ -11481,7 +11618,7 @@ REQUEST: cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 P1D @@ -11490,7 +11627,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1432723426 + 1433255634 ``` @@ -11504,12 +11641,12 @@ RESPONSE: Unimplemented object service - domain48.ee + domain50.ee - 1432723426 - ccReg-5852406493 + 1433255634 + ccReg-3128458487 @@ -11524,7 +11661,7 @@ REQUEST: - domain48.ee + domain50.ee 256 3 @@ -11532,7 +11669,7 @@ REQUEST: cmlraXN0aGViZXN0 - d3e3d1fe3ece74a0927320fb3bb567de + d74cd8d1c9da83127bcbfdbefc781dd1 P1D @@ -11541,7 +11678,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1432723426 + 1433255634 ``` @@ -11556,8 +11693,8 @@ RESPONSE: Attribute is invalid: type - 1432723426 - ccReg-5724944407 + 1433255634 + ccReg-0297240223 @@ -11603,7 +11740,7 @@ RESPONSE: ABC-12345 - ccReg-9186607336 + ccReg-2389453333 @@ -11618,7 +11755,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -11633,8 +11770,8 @@ RESPONSE: Command completed successfully; no messages - 1432723427 - ccReg-4362839400 + 1433255635 + ccReg-4831425687 @@ -11682,7 +11819,7 @@ RESPONSE: ABC-12345 - ccReg-0618571136 + ccReg-5009213156 @@ -11695,7 +11832,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -11710,8 +11847,8 @@ RESPONSE: Command completed successfully; no messages - 1432723427 - ccReg-9229141591 + 1433255635 + ccReg-4579720314 @@ -11757,7 +11894,7 @@ RESPONSE: ABC-12345 - ccReg-7150833559 + ccReg-1117836622 @@ -11770,7 +11907,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -11785,12 +11922,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-05-27 10:43:47 UTC + 2015-06-02T14:33:55Z Balance low. - 1432723427 - ccReg-6409633797 + 1433255635 + ccReg-6818644062 @@ -11836,7 +11973,7 @@ RESPONSE: ABC-12345 - ccReg-1091372734 + ccReg-5629164655 @@ -11849,7 +11986,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -11867,8 +12004,8 @@ RESPONSE: - 1432723427 - ccReg-4266035206 + 1433255635 + ccReg-8779692532 @@ -11914,7 +12051,7 @@ RESPONSE: ABC-12345 - ccReg-5253306865 + ccReg-2322466492 @@ -11927,7 +12064,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -11943,8 +12080,8 @@ RESPONSE: - 1432723427 - ccReg-5030345374 + 1433255635 + ccReg-1448968329 @@ -11957,7 +12094,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -11975,8 +12112,8 @@ RESPONSE: - 1432723427 - ccReg-3853180260 + 1433255635 + ccReg-5059320168 @@ -11991,7 +12128,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12006,8 +12143,8 @@ RESPONSE: Attribute is invalid: op - 1432723427 - ccReg-4855688629 + 1433255635 + ccReg-7334193234 @@ -12022,7 +12159,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12037,12 +12174,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-05-27 10:43:47 UTC + 2015-06-02T14:33:55Z Smth else. - 1432723427 - ccReg-8604749468 + 1433255635 + ccReg-8601126353 @@ -12055,7 +12192,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12071,8 +12208,8 @@ RESPONSE: - 1432723427 - ccReg-9137309782 + 1433255635 + ccReg-0720878869 @@ -12085,7 +12222,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12100,12 +12237,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-05-27 10:43:47 UTC + 2015-06-02T14:33:55Z Something. - 1432723427 - ccReg-9591605036 + 1433255635 + ccReg-6387534980 @@ -12118,7 +12255,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12134,8 +12271,8 @@ RESPONSE: - 1432723427 - ccReg-3197560707 + 1433255635 + ccReg-7629601014 @@ -12148,7 +12285,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12163,12 +12300,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-05-27 10:43:47 UTC + 2015-06-02T14:33:55Z Balance low. - 1432723427 - ccReg-9671477441 + 1433255635 + ccReg-7195300830 @@ -12181,7 +12318,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12197,8 +12334,8 @@ RESPONSE: - 1432723427 - ccReg-9804202574 + 1433255635 + ccReg-9650279518 @@ -12211,7 +12348,7 @@ REQUEST: - 1432723427 + 1433255635 ``` @@ -12226,8 +12363,8 @@ RESPONSE: Command completed successfully; no messages - 1432723427 - ccReg-8729751147 + 1433255635 + ccReg-7592361386 @@ -12242,7 +12379,7 @@ RESPONSE: EPP server (EIS) - 2015-05-27T10:43:48Z + 2015-06-02T14:33:56Z 1.0 en @@ -12318,7 +12455,7 @@ RESPONSE: ABC-12345 - ccReg-7587508443 + ccReg-7464095017 @@ -12366,7 +12503,7 @@ RESPONSE: ABC-12345 - ccReg-7134407379 + ccReg-2654938305 @@ -12380,9 +12517,11 @@ REQUEST: - - - + + + test.ee + + ABC-12345 @@ -12399,7 +12538,7 @@ RESPONSE: ABC-12345 - ccReg-5606311571 + ccReg-9898783286 @@ -12431,7 +12570,6 @@ REQUEST: - ``` @@ -12446,7 +12584,7 @@ RESPONSE: Authentication error; server closing connection - ccReg-3376507236 + ccReg-8185595001 @@ -12494,7 +12632,7 @@ RESPONSE: ABC-12345 - ccReg-1053185597 + ccReg-4199405905 @@ -12542,7 +12680,7 @@ RESPONSE: ABC-12345 - ccReg-9585410433 + ccReg-0414590639 @@ -12588,7 +12726,7 @@ RESPONSE: ABC-12345 - ccReg-0652880827 + ccReg-6335502065 @@ -12636,7 +12774,7 @@ RESPONSE: ABC-12345 - ccReg-4357103420 + ccReg-6677960555 @@ -12665,7 +12803,7 @@ RESPONSE: ABC-12345 - ccReg-2409810658 + ccReg-5660755803 @@ -12682,6 +12820,7 @@ REQUEST: gitlab ghyt9e4fu + abcdefg 1.0 en @@ -12696,7 +12835,6 @@ REQUEST: urn:ee:eis:xml:epp:eis-1.0 - abcdefg ABC-12345 @@ -12714,7 +12852,7 @@ RESPONSE: ABC-12345 - ccReg-7664508234 + ccReg-3509704396 @@ -12731,6 +12869,7 @@ REQUEST: gitlab ghyt9e4fu + 1.0 en @@ -12745,7 +12884,6 @@ REQUEST: urn:ee:eis:xml:epp:eis-1.0 - ABC-12345 @@ -12763,7 +12901,56 @@ RESPONSE: ABC-12345 - ccReg-8555388764 + ccReg-9043992654 + + + +``` + +### EPP Session when connected with valid user fails if new password is not valid + +REQUEST: + +```xml + + + + + gitlab + ghyt9e4fu + + + 1.0 + en + + + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:contact-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ee:eis:xml:epp:eis-1.0 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Password is missing [password] + + + ABC-12345 + ccReg-6766869050 From 147892b4d9c58e18945bf2569a756240119f684b Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 2 Jun 2015 18:14:27 +0300 Subject: [PATCH 050/174] Legal doc should not be required on domain transfer #2595 --- app/views/registrar/domains/transfer_index.haml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/views/registrar/domains/transfer_index.haml b/app/views/registrar/domains/transfer_index.haml index 5eab1f5ae..ecc5ff1a4 100644 --- a/app/views/registrar/domains/transfer_index.haml +++ b/app/views/registrar/domains/transfer_index.haml @@ -17,11 +17,11 @@ class: 'form-control', autocomplete: 'off', required: true .form-group .col-md-3.control-label - = label_tag 'legal_document', t(:legal_document), class: 'required' + = label_tag 'legal_document', t(:legal_document) .col-md-7 - = file_field_tag 'legal_document', required: true + = file_field_tag 'legal_document' .form-group .col-md-10.text-right - %button.btn.btn-warning{ name: 'query' }= t(:query) - %button.btn.btn-warning{ name: 'approve' }= t(:approve) - %button.btn.btn-warning{ name: 'reject' }= t(:reject) + %button.btn.btn-warning{ name: 'query' }= t(:transfer) + /%button.btn.btn-warning{ name: 'approve' }= t(:approve) + /%button.btn.btn-warning{ name: 'reject' }= t(:reject) From 410914e16ebf3d0aacf13698ed3e39cd6e687c91 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 3 Jun 2015 10:06:40 +0300 Subject: [PATCH 051/174] Contact change notification email content update #2558 --- app/models/contact.rb | 18 +++++++++++++++++ .../contact_mailer/email_updated.html.erb | 12 ++++++----- .../contact_mailer/email_updated.text.erb | 14 +++++++------ spec/models/contact_spec.rb | 20 +++++++++++++++++++ 4 files changed, 53 insertions(+), 11 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 5cbc6ac53..f2de0a4fd 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -7,6 +7,7 @@ class Contact < ActiveRecord::Base has_many :domains, through: :domain_contacts has_many :statuses, class_name: 'ContactStatus', dependent: :destroy has_many :legal_documents, as: :documentable + has_many :registrant_domains, class_name: 'Domain', foreign_key: 'registrant_id' # when contant is registrant accepts_nested_attributes_for :legal_documents @@ -184,4 +185,21 @@ class Contact < ActiveRecord::Base errors.add(:ident, :invalid_country_code) end end + + def related_domain_descriptions + @desc = {} + + registrant_domains.each do |dom| + @desc[dom.name] ||= [] + @desc[dom.name] << :registrant + end + + domain_contacts.each do |dc| + @desc[dc.domain.name] ||= [] + @desc[dc.domain.name] << dc.name.downcase.to_sym + @desc[dc.domain.name] = @desc[dc.domain.name].compact + end + + @desc + end end diff --git a/app/views/contact_mailer/email_updated.html.erb b/app/views/contact_mailer/email_updated.html.erb index c461659b1..438bbdbb5 100644 --- a/app/views/contact_mailer/email_updated.html.erb +++ b/app/views/contact_mailer/email_updated.html.erb @@ -6,10 +6,10 @@ uus aadress: <%= @contact.email %>

Eposti aadressile saadetakse domeenidega seotud infot seal hulgas kinnitustaotluseid omaniku vahetuse ja domeeni kustutamise korral. Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduga oma registripidaja poole. Teie registripidaja on <%= @contact.registrar.name %>

-<% if @contact.domain_contacts.present? %> +<% if @contact.related_domain_descriptions.present? %> Muudatusega seotud domeenid:
-<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>)
+<% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>)
<% end %> <% end %>
@@ -35,9 +35,11 @@ new address: <% @contact.email %>

E-mail addresses are used to send important information regarding your registered domains including applications for approval of registrant change and domain deletion. Please make sure that the update and contact information are correct. Incase of problems please turn to your registrar. Your registrar is <%= @contact.registrar.name %>

+<% if @contact.related_domain_descriptions.present? %> Domains affected by this update:
-<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>)
+<% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>)
+<% end %> <% end %>
Contact information:
diff --git a/app/views/contact_mailer/email_updated.text.erb b/app/views/contact_mailer/email_updated.text.erb index 5d70bca79..a304c5c66 100644 --- a/app/views/contact_mailer/email_updated.text.erb +++ b/app/views/contact_mailer/email_updated.text.erb @@ -6,11 +6,11 @@ uus aadress: <%= @contact.email %> Eposti aadressile saadetakse domeenidega seotud infot seal hulgas kinnitustaotluseid omaniku vahetuse ja domeeni kustutamise korral. Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduga oma registripidaja poole. Teie registripidaja on <%= @contact.registrar.name %> -<% if @contact.domain_contacts.present? %> +<% if @contact.related_domain_descriptions.present? %> Muudatusega seotud domeenid: -<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>) -<% end %> + <% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>) + <% end %> <% end %> Kontaktandmed: @@ -35,9 +35,11 @@ new address: <% @contact.email %> E-mail addresses are used to send important information regarding your registered domains including applications for approval of registrant change and domain deletion. Please make sure that the update and contact information are correct. Incase of problems please turn to your registrar. Your registrar is <%= @contact.registrar.name %> +<% if @contact.related_domain_descriptions.present? %> Domains affected by this update: -<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>) + <% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>) + <% end %> <% end %> Contact information: diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb index 107f72106..86fe6fc90 100644 --- a/spec/models/contact_spec.rb +++ b/spec/models/contact_spec.rb @@ -99,6 +99,10 @@ describe Contact do @contact.valid? @contact.errors[:code].should == ['is too long (maximum is 100 characters)'] end + + it 'should have no related domain descriptions' do + @contact.related_domain_descriptions.should == {} + end end context 'with valid attributes' do @@ -189,6 +193,22 @@ describe Contact do # contact.statuses.map(&:value).should == %w(ok linked) end + context 'as birthday' do + before do + @domain = Fabricate(:domain) + end + + it 'should have related domain descriptions hash' do + contact = @domain.registrant + contact.related_domain_descriptions.should == { "#{@domain.name}" => [:registrant] } + end + + it 'should have related domain descriptions hash' do + contact = @domain.contacts.first + contact.related_domain_descriptions.should == { "#{@domain.name}" => [:admin] } + end + end + context 'as birthday' do before :all do @contact.ident_type = 'birthday' From 245bcf2b6bb85f2a9bdea57a97851b96d9286291 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 3 Jun 2015 10:39:07 +0300 Subject: [PATCH 052/174] Add contact email translations #2558 --- app/views/contact_mailer/email_updated.html.erb | 4 ++-- app/views/contact_mailer/email_updated.text.erb | 4 ++-- config/locales/en.yml | 2 ++ config/locales/et.yml | 3 +++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/views/contact_mailer/email_updated.html.erb b/app/views/contact_mailer/email_updated.html.erb index 438bbdbb5..e4785444b 100644 --- a/app/views/contact_mailer/email_updated.html.erb +++ b/app/views/contact_mailer/email_updated.html.erb @@ -9,7 +9,7 @@ Eposti aadressile saadetakse domeenidega seotud infot seal hulgas kinnitustaotlu <% if @contact.related_domain_descriptions.present? %> Muudatusega seotud domeenid:
<% @contact.related_domain_descriptions.each do |domain, desc| %> - <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>)
+ <%= domain %> (<%= desc.map { |d| t(d, locale: :et) }.join(', ') %>)
<% end %> <% end %>
@@ -38,7 +38,7 @@ E-mail addresses are used to send important information regarding your registere <% if @contact.related_domain_descriptions.present? %> Domains affected by this update:
<% @contact.related_domain_descriptions.each do |domain, desc| %> - <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>)
+ <%= domain %> (<%= desc.map { |d| t(d, locale: :en) }.join(', ') %>)
<% end %> <% end %>
diff --git a/app/views/contact_mailer/email_updated.text.erb b/app/views/contact_mailer/email_updated.text.erb index a304c5c66..61d875351 100644 --- a/app/views/contact_mailer/email_updated.text.erb +++ b/app/views/contact_mailer/email_updated.text.erb @@ -9,7 +9,7 @@ Eposti aadressile saadetakse domeenidega seotud infot seal hulgas kinnitustaotlu <% if @contact.related_domain_descriptions.present? %> Muudatusega seotud domeenid: <% @contact.related_domain_descriptions.each do |domain, desc| %> - <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>) + <%= domain %> (<%= desc.map { |d| t(d, locale: :et) }.join(', ') %>) <% end %> <% end %> @@ -38,7 +38,7 @@ E-mail addresses are used to send important information regarding your registere <% if @contact.related_domain_descriptions.present? %> Domains affected by this update: <% @contact.related_domain_descriptions.each do |domain, desc| %> - <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>) + <%= domain %> (<%= desc.map { |d| t(d, locale: :en) }.join(', ') %>) <% end %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 954e89eeb..9203bf6ff 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -810,3 +810,5 @@ en: invalid_csr_or_crt: 'Invalid CSR or CRT' webserver_missing_client_cert_directive: 'Webserver missing client cert directive' webserver_client_cert_directive_should_be_required: 'Webserver client cert directive should be required' + tech: Tech contact + admin: Admin contact diff --git a/config/locales/et.yml b/config/locales/et.yml index 37e1e9dea..2e56c701f 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -2,3 +2,6 @@ et: username: 'Kasutajanimi' password: 'Parool' log_in: 'Logi sisse' + registrant: 'Registreerija' + tech: Tehniline kontakt + admin: Halduskontakt From 7a603d7ec6c65e1d27d65b3747128e45c50c7aa6 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 10:40:27 +0300 Subject: [PATCH 053/174] Add logging for domain transfer #2595 --- app/models/epp/domain.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 8da4b4d6b..2b5b2d72c 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -395,7 +395,7 @@ class Epp::Domain < Domain at[:domain_statuses_attributes] += at_add[:domain_statuses_attributes] if frame.css('registrant').present? && frame.css('registrant').attr('verified').to_s.downcase != 'yes' - registrant_verification_asked! + registrant_verification_asked! end self.deliver_emails = true # turn on email delivery for epp @@ -415,7 +415,7 @@ class Epp::Domain < Domain return false unless valid? if frame.css('delete').attr('verified').to_s.downcase != 'yes' - registrant_verification_asked! + registrant_verification_asked! pending_delete! manage_automatic_statuses true # aka 1001 pending_delete @@ -550,6 +550,7 @@ class Epp::Domain < Domain return dt rescue => _e add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error')) + logger.error(e) raise ActiveRecord::Rollback end end From 6293b3b1bb4addde7691abded40c8dd8163ce576 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 3 Jun 2015 10:42:50 +0300 Subject: [PATCH 054/174] Estonian translation update #2558 --- config/locales/et.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/locales/et.yml b/config/locales/et.yml index 2e56c701f..6f8a51040 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -2,6 +2,6 @@ et: username: 'Kasutajanimi' password: 'Parool' log_in: 'Logi sisse' - registrant: 'Registreerija' - tech: Tehniline kontakt - admin: Halduskontakt + registrant: registreerija + tech: tehniline kontakt + admin: halduskontakt From ce49a7aef2298e91351f2f0469f4d1ed2ecf1c75 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 10:49:33 +0300 Subject: [PATCH 055/174] Typo fix #2595 --- app/models/epp/domain.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 2b5b2d72c..e49501080 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -550,7 +550,7 @@ class Epp::Domain < Domain return dt rescue => _e add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error')) - logger.error(e) + logger.error(_e) raise ActiveRecord::Rollback end end From 2132489026edb866b0b3979066bee17f11a65c4c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 10:54:35 +0300 Subject: [PATCH 056/174] Skip contact validation on transfer #2595 --- app/models/epp/domain.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index e49501080..e6430dc5f 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -467,7 +467,7 @@ class Epp::Domain < Domain oc = c.deep_clone include: [:statuses] oc.code = nil oc.registrar_id = registrar_id - oc.save! + oc.save!(validate: false) oc end @@ -475,7 +475,7 @@ class Epp::Domain < Domain oc = Contact.find(contact_id) # n+1 workaround oc.registrar_id = registrar_id oc.generate_new_code! - oc.save! + oc.save!(validate: false) oc end @@ -548,9 +548,10 @@ class Epp::Domain < Domain save!(validate: false) return dt - rescue => _e + rescue => e add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error')) - logger.error(_e) + logger.error('DOMAIN TRANSFER FAILED') + logger.error(e) raise ActiveRecord::Rollback end end From a7def0b7aebead1b0edd685f50b05d402e34fec9 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 12:13:16 +0300 Subject: [PATCH 057/174] Fix contact code prefix on transfer #2595 --- app/models/contact.rb | 4 ++-- app/models/epp/domain.rb | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 3d5db652c..a5d558c98 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -148,10 +148,10 @@ class Contact < ActiveRecord::Base end # rubocop:enable Metrics/CyclomaticComplexity - # used only for contact trasphere + # used only for contact transfer def generate_new_code! return nil if registrar.blank? - registrar.reload # for contact transfere + registrar.reload # for contact transfer self[:code] = "#{registrar.code}:#{SecureRandom.hex(4)}".upcase end diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index e6430dc5f..3f054003b 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -467,6 +467,7 @@ class Epp::Domain < Domain oc = c.deep_clone include: [:statuses] oc.code = nil oc.registrar_id = registrar_id + oc.prefix_code oc.save!(validate: false) oc end From c1b5fc8265dfe650567ecdbc3daecab97197a920 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 14:34:04 +0300 Subject: [PATCH 058/174] Fix domain name validation #2609 --- app/validators/domain_name_validator.rb | 3 +-- spec/models/domain_spec.rb | 14 +++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 4d337b8b5..6a2d41c43 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -31,9 +31,8 @@ class DomainNameValidator < ActiveModel::EachValidator # rubocop: disable Metrics/LineLength unicode_chars = /\u00E4\u00F5\u00F6\u00FC\u0161\u017E/ # äõöüšž - regexp = /\A[a-zA-Z0-9#{unicode_chars}][a-zA-Z0-9#{unicode_chars}-]{0,61}[a-zA-Z0-9#{unicode_chars}]#{general_domains}\z/ + regexp = /\A[a-zA-Z0-9#{unicode_chars.source}][a-zA-Z0-9#{unicode_chars.source}-]{0,61}[a-zA-Z0-9#{unicode_chars.source}]#{general_domains.source}\z/ # rubocop: enable Metrics/LineLength - # rubocop: disable Style/DoubleNegation !!(value =~ regexp) # rubocop: enable Style/DoubleNegation diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index cc6c4e257..c9177b406 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -242,7 +242,7 @@ describe Domain do end it 'should not be valid when name length is longer than 63 characters' do - d = Fabricate.build(:domain, + d = Fabricate.build(:domain, name: "xn--4caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.ee") d.valid? d.errors.full_messages.should match_array([ @@ -294,6 +294,18 @@ describe Domain do d.errors.full_messages.should == ["Domain name Domain name is invalid"] end + it 'should not be valid with at character' do + d = Fabricate.build(:domain, name: 'dass@sf.ee') + d.valid? + d.errors.full_messages.should == ["Domain name Domain name is invalid"] + end + + it 'should not be valid with invalid characters' do + d = Fabricate.build(:domain, name: '@ba)s(?ä_:-df.ee') + d.valid? + d.errors.full_messages.should == ["Domain name Domain name is invalid"] + end + it 'should be valid when name length is two pynicodes' do d = Fabricate.build(:domain, name: "xn--4caa.ee") d.valid? From 1db3486e654c8b50bc7c1ce3ea82d6e65608152e Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 15:14:52 +0300 Subject: [PATCH 059/174] Do not allow foreign domain renew #2629 --- app/controllers/epp/domains_controller.rb | 2 +- app/models/ability.rb | 2 +- spec/epp/domain_spec.rb | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index 94a077758..6ddab07a0 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -77,7 +77,7 @@ class Epp::DomainsController < EppController end def renew - authorize! :renew, Epp::Domain + authorize! :renew, @domain handle_errors(@domain) and return unless @domain.renew( params[:parsed_frame].css('curExpDate').text, diff --git a/app/models/ability.rb b/app/models/ability.rb index 067b89a37..79dcb991a 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -28,7 +28,7 @@ class Ability can(:info, Epp::Domain) { |d, pw| d.registrar_id == @user.registrar_id || pw.blank? ? true : d.auth_info == pw } can(:check, Epp::Domain) can(:create, Epp::Domain) - can(:renew, Epp::Domain) + can(:renew, Epp::Domain) { |d| d.registrar_id == @user.registrar_id } can(:update, Epp::Domain) { |d, pw| d.registrar_id == @user.registrar_id || d.auth_info == pw } can(:transfer, Epp::Domain) { |d, pw| d.auth_info == pw } can(:view_password, Epp::Domain) { |d, pw| d.registrar_id == @user.registrar_id || d.auth_info == pw } diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 73ba344ae..f14c79915 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -1993,6 +1993,21 @@ describe 'EPP Domain', epp: true do response[:results][0][:value].should == '4' end + it 'does not renew foreign domain' do + login_as :registrar2 do + exp_date = 1.year.since.to_date + xml = @epp_xml.domain.renew( + name: { value: domain.name }, + curExpDate: { value: exp_date.to_s }, + period: { value: '1', attrs: { unit: 'y' } } + ) + + response = epp_plain_request(xml) + response[:results][0][:msg].should == 'Authorization error' + response[:results][0][:result_code].should == '2201' + end + end + ### INFO ### it 'returns domain info' do domain.domain_statuses.build(value: DomainStatus::CLIENT_HOLD, description: 'Payment overdue.') From 4da89aaa8718c3113a6b89b99df7995aad347888 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 3 Jun 2015 16:34:37 +0300 Subject: [PATCH 060/174] Admin can change other users settings without user password #2646 --- .../stylesheets/shared/general-bootstrap.sass | 3 + app/assets/stylesheets/shared/general.sass | 2 + .../admin/admin_users_controller.rb | 13 ++- app/controllers/admin/api_users_controller.rb | 1 + app/models/admin_user.rb | 5 +- app/views/admin/admin_users/_form.haml | 14 ++- app/views/admin/api_users/_form.haml | 12 ++- spec/fabricators/admin_user_fabricator.rb | 2 +- spec/models/admin_user_spec.rb | 96 ++++++------------- 9 files changed, 67 insertions(+), 81 deletions(-) diff --git a/app/assets/stylesheets/shared/general-bootstrap.sass b/app/assets/stylesheets/shared/general-bootstrap.sass index 29a605cb7..20c8c3336 100644 --- a/app/assets/stylesheets/shared/general-bootstrap.sass +++ b/app/assets/stylesheets/shared/general-bootstrap.sass @@ -65,3 +65,6 @@ .required:after content: "*" margin: 0 0 0 1px + +.not-required:after + content: '' diff --git a/app/assets/stylesheets/shared/general.sass b/app/assets/stylesheets/shared/general.sass index b0b11c9aa..1a2975b5f 100644 --- a/app/assets/stylesheets/shared/general.sass +++ b/app/assets/stylesheets/shared/general.sass @@ -57,3 +57,5 @@ body > .container .text-grey color: grey + + diff --git a/app/controllers/admin/admin_users_controller.rb b/app/controllers/admin/admin_users_controller.rb index 2a0d24689..eb4a4cb25 100644 --- a/app/controllers/admin/admin_users_controller.rb +++ b/app/controllers/admin/admin_users_controller.rb @@ -11,6 +11,10 @@ class Admin::AdminUsersController < AdminController @admin_user = AdminUser.new end + def show; end + + def edit; end + def create @admin_user = AdminUser.new(admin_user_params) @@ -23,12 +27,11 @@ class Admin::AdminUsersController < AdminController end end - def show; end - - def edit; end - def update - if @admin_user.update(admin_user_params) + params[:admin_user].delete(:password) if params[:admin_user][:password].blank? + params[:admin_user].delete(:password_confirmation) if params[:admin_user][:password_confirmation].blank? + + if @admin_user.update_attributes(admin_user_params) flash[:notice] = I18n.t('record_updated') redirect_to [:admin, @admin_user] else diff --git a/app/controllers/admin/api_users_controller.rb b/app/controllers/admin/api_users_controller.rb index be2170016..6e0dd7f0f 100644 --- a/app/controllers/admin/api_users_controller.rb +++ b/app/controllers/admin/api_users_controller.rb @@ -29,6 +29,7 @@ class Admin::ApiUsersController < AdminController def edit; end def update + params[:api_user].delete(:password) if params[:api_user][:password].blank? if @api_user.update(api_user_params) flash[:notice] = I18n.t('record_updated') redirect_to [:admin, @api_user] diff --git a/app/models/admin_user.rb b/app/models/admin_user.rb index 79e8f5649..0634baef4 100644 --- a/app/models/admin_user.rb +++ b/app/models/admin_user.rb @@ -1,9 +1,10 @@ class AdminUser < User - validates :username, :password, :country_code, :roles, presence: true + validates :username, :country_code, :roles, presence: true validates :identity_code, uniqueness: true, allow_blank: true validates :identity_code, presence: true, if: -> { country_code == 'EE' } validates :email, presence: true - + validates :password, :password_confirmation, presence: true, if: :new_record? + validates :password_confirmation, presence: true, if: :encrypted_password_changed? validate :validate_identity_code, if: -> { country_code == 'EE' } ROLES = %w(user customer_service admin) # should not match to api_users roles diff --git a/app/views/admin/admin_users/_form.haml b/app/views/admin/admin_users/_form.haml index 8db7583f2..9a9aa8a80 100644 --- a/app/views/admin/admin_users/_form.haml +++ b/app/views/admin/admin_users/_form.haml @@ -11,14 +11,15 @@ - if @admin_user.new_record? || can?(:update, AdminUser) .form-group .col-md-4.control-label - = f.label :password + - not_required = @admin_user.new_record? ? '' : 'not-required' + = f.label :password, class: not_required .col-md-8 - = f.text_field(:password, class: 'form-control') + = f.password_field(:password, class: 'form-control') .form-group .col-md-4.control-label - = f.label :password_confirmation + = f.label :password_confirmation, class: not_required .col-md-8 - = f.text_field(:password_confirmation, class: 'form-control') + = f.password_field(:password_confirmation, class: 'form-control') %hr .form-group @@ -48,3 +49,8 @@ .row .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-primary') + +:coffee + $("#admin_user_password").removeAttr('required') + $("#admin_user_password_confirmation").removeAttr('required') + diff --git a/app/views/admin/api_users/_form.haml b/app/views/admin/api_users/_form.haml index 24ca8465b..e6851e424 100644 --- a/app/views/admin/api_users/_form.haml +++ b/app/views/admin/api_users/_form.haml @@ -1,4 +1,5 @@ -= form_for([:admin, @api_user], multipart: true, html: {class: 'form-horizontal'}) do |f| += form_for([:admin, @api_user], multipart: true, + html: {class: 'form-horizontal', autocomplete: 'off'}) do |f| = render 'shared/full_errors', object: @api_user .row @@ -10,9 +11,11 @@ = f.text_field(:username, class: 'form-control') .form-group .col-md-4.control-label - = f.label :password + - not_required = @api_user.new_record? ? '' : 'not-required' + = f.label :password, class: not_required .col-md-7 - = f.text_field(:password, class: 'form-control') + = f.text_field :password, class: 'form-control', autocomplete: 'off' + .form-group .col-md-4.control-label = f.label :identity_code @@ -48,4 +51,5 @@ = button_tag(t(:save), class: 'btn btn-primary') :coffee - Autocomplete.bindAdminRegistrarSearch(); + Autocomplete.bindAdminRegistrarSearch() + $("#api_user_password").removeAttr('required') diff --git a/spec/fabricators/admin_user_fabricator.rb b/spec/fabricators/admin_user_fabricator.rb index 2c54ad938..a73596810 100644 --- a/spec/fabricators/admin_user_fabricator.rb +++ b/spec/fabricators/admin_user_fabricator.rb @@ -4,7 +4,7 @@ Fabricator(:admin_user) do username 'gitlab' password 'ghyt9e4fu' password_confirmation 'ghyt9e4fu' - email 'info@gitlab.eu' + email { sequence(:email) { |i| "info#{i}@example.com" } } country_code 'FI' roles ['admin'] end diff --git a/spec/models/admin_user_spec.rb b/spec/models/admin_user_spec.rb index d24ca24c5..a6b668a5d 100644 --- a/spec/models/admin_user_spec.rb +++ b/spec/models/admin_user_spec.rb @@ -4,95 +4,61 @@ require 'cancan/matchers' describe AdminUser do context 'with invalid attribute' do before :all do - @user = AdminUser.new + @admin_user = AdminUser.new end it 'should not be valid' do - @user.valid? - @user.errors.full_messages.should match_array([ + @admin_user.valid? + @admin_user.errors.full_messages.should match_array([ "Country code is missing", "Email Email is missing", "Email Email is missing", "Password Password is missing", "Password Password is missing", + "Password confirmation is missing", "Roles is missing", "Username Username is missing" ]) end it 'should not have any versions' do - @user.versions.should == [] + @admin_user.versions.should == [] end end context 'with valid attributes' do before :all do - @user = Fabricate(:admin_user) + @admin_user = Fabricate(:admin_user) end it 'should be valid' do - @user.valid? - @user.errors.full_messages.should match_array([]) + @admin_user.valid? + @admin_user.errors.full_messages.should match_array([]) end - # it 'should be valid twice' do - # @user = Fabricate(:admin_user) - # @user.valid? - # @user.errors.full_messages.should match_array([]) - # end + it 'should be valid twice' do + @admin_user = Fabricate(:admin_user) + @admin_user.valid? + @admin_user.errors.full_messages.should match_array([]) + end - # it 'should have one version' do - # with_versioning do - # @user.versions.should == [] - # @user.zip = 'New zip' - # @user.save - # @user.errors.full_messages.should match_array([]) - # @user.versions.size.should == 1 - # end - # end + it 'should have one version' do + with_versioning do + @admin_user.versions.should == [] + @admin_user.updated_at = Time.zone.now + @admin_user.save + @admin_user.errors.full_messages.should match_array([]) + @admin_user.versions.size.should == 1 + end + end + + it 'should require password confirmation when changing password' do + @admin_user.valid?.should == true + @admin_user.password = 'not confirmed' + @admin_user.valid? + @admin_user.errors.full_messages.should match_array([ + "Password confirmation doesn't match Password" + ]) + end end - - # describe 'abilities' do - # subject(:ability) { Ability.new(user) } - # let(:user) { nil } - - # context 'when user is admin' do - # let(:user) { Fabricate(:admin_user) } - - # it { should be_able_to(:manage, Domain.new) } - # it { should be_able_to(:manage, Contact.new) } - # it { should be_able_to(:manage, Registrar.new) } - # it { should be_able_to(:manage, Setting.new) } - # it { should be_able_to(:manage, ZonefileSetting.new) } - # it { should be_able_to(:manage, DomainVersion.new) } - # it { should be_able_to(:manage, User.new) } - # it { should be_able_to(:manage, ApiUser.new) } - # it { should be_able_to(:manage, Keyrelay.new) } - # it { should be_able_to(:manage, LegalDocument.new) } - # it { should be_able_to(:read, ApiLog::EppLog.new) } - # it { should be_able_to(:read, ApiLog::ReppLog.new) } - # it { should be_able_to(:index, :delayed_job) } - # it { should be_able_to(:create, :zonefile) } - # it { should be_able_to(:access, :settings_menu) } - # end - - # context 'when user is customer service' do - # let(:user) { Fabricate(:user, roles: ['customer_service']) } - - # it { should be_able_to(:manage, Domain.new) } - # it { should be_able_to(:manage, Contact.new) } - # it { should be_able_to(:manage, Registrar.new) } - # it { should_not be_able_to(:manage, Setting.new) } - # it { should_not be_able_to(:manage, ZonefileSetting.new) } - # it { should_not be_able_to(:manage, DomainVersion.new) } - # it { should_not be_able_to(:manage, User.new) } - # it { should_not be_able_to(:manage, ApiUser.new) } - # it { should_not be_able_to(:manage, LegalDocument.new) } - # it { should_not be_able_to(:read, ApiLog::EppLog.new) } - # it { should_not be_able_to(:read, ApiLog::ReppLog.new) } - # it { should_not be_able_to(:index, :delayed_job) } - # it { should_not be_able_to(:create, :zonefile) } - # it { should_not be_able_to(:access, :settings_menu) } - # end - # end end From ea95e878a595cfd27a919d4e6bff9f85da11ae94 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 16:43:03 +0300 Subject: [PATCH 061/174] Hide action buttons on foreign domain info #2629 --- app/views/registrar/domains/info.haml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/views/registrar/domains/info.haml b/app/views/registrar/domains/info.haml index 369e0f87d..4d7ffb429 100644 --- a/app/views/registrar/domains/info.haml +++ b/app/views/registrar/domains/info.haml @@ -1,10 +1,11 @@ - content_for :actions do - = link_to(t(:edit), edit_registrar_domains_path(domain_name: params[:domain_name]), - class: 'btn btn-default') - = link_to(t(:renew), renew_registrar_domains_path(domain_name: params[:domain_name]), - class: 'btn btn-default') - = link_to(t(:delete), delete_registrar_domains_path(domain_name: params[:domain_name]), - class: 'btn btn-default') + - if @data.css('pw').text.present? + = link_to(t(:edit), edit_registrar_domains_path(domain_name: params[:domain_name]), + class: 'btn btn-default') + = link_to(t(:renew), renew_registrar_domains_path(domain_name: params[:domain_name]), + class: 'btn btn-default') + = link_to(t(:delete), delete_registrar_domains_path(domain_name: params[:domain_name]), + class: 'btn btn-default') = render 'shared/title', name: truncate(@data.css('name').text) .row From eaaf8b39f93391e27baf98796241ce2b222ad9fa Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 3 Jun 2015 18:09:20 +0300 Subject: [PATCH 062/174] Add password_confirmation to admin users #2646 --- app/controllers/admin/admin_users_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/admin_users_controller.rb b/app/controllers/admin/admin_users_controller.rb index eb4a4cb25..372a9654a 100644 --- a/app/controllers/admin/admin_users_controller.rb +++ b/app/controllers/admin/admin_users_controller.rb @@ -57,6 +57,6 @@ class Admin::AdminUsersController < AdminController end def admin_user_params - params.require(:admin_user).permit(:username, :password, :identity_code, :email, :country_code, { roles: [] }) + params.require(:admin_user).permit(:username, :password, :password_confirmation, :identity_code, :email, :country_code, { roles: [] }) end end From 4b5243585d19a0d5e6e72ac08de3d01327a230ac Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 4 Jun 2015 00:38:56 +0300 Subject: [PATCH 063/174] Added pricelist to admin #2380 --- Gemfile | 2 + Gemfile.lock | 79 ++--- app/assets/javascripts/admin-manifest.coffee | 5 - .../javascripts/admin/application.coffee | 16 +- .../javascripts/registrar/application.coffee | 2 +- app/assets/javascripts/shared/general.coffee | 17 +- app/assets/stylesheets/admin-manifest.sass | 2 + .../admin/pricelists_controller.rb | 44 +++ app/models/ability.rb | 1 + app/models/pricelist.rb | 16 + app/models/version/pricelist_version.rb | 4 + app/views/admin/pricelists/_form.haml | 33 ++ app/views/admin/pricelists/edit.haml | 6 + app/views/admin/pricelists/index.haml | 57 ++++ app/views/admin/pricelists/new.haml | 3 + app/views/layouts/admin/application.haml | 5 + config/initializers/datetime.rb | 3 + config/initializers/money.rb | 70 +++++ config/initializers/relaxed_i18n.rb | 11 + config/locales/en.yml | 6 +- config/routes.rb | 5 +- db/migrate/20150305092921_add_pricelist.rb | 25 ++ db/migrate/20150603141549_add_decimal_type.rb | 16 + .../20150603211318_change_price_to_decimal.rb | 5 + ...0150603212659_add_duration_to_pricelist.rb | 5 + db/schema.rb | 61 ++-- ...fest-777146d8396a4f217ac1f34291da0a5d.json | 1 + ...a255ddeb09cae1a258ee62f8cb0746496124a0.css | 30 ++ ...f00654de236d2bb1b16bbdf929b47e6504381f3.js | 201 ++++++++++++ ...749e49845ce9827c3254f31abc689b1cc284877.js | 201 ++++++++++++ ...5521a14a72e3bbeece3b4363494d70fcd274542.js | 1 + ...6f24a537dd2e4598238527d232a3e2ea5b5947.png | Bin 0 -> 7089 bytes ...5b0fbac11d63ec6106d959df3fa180b379de05.jpg | Bin 0 -> 69058 bytes ...1724d183a39ad072e73e1b3d8cbf646d2d0407.eot | Bin 0 -> 20127 bytes ...bcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg | 288 ++++++++++++++++++ ...8596275a9839b959c226e15439557a5a80742.woff | Bin 0 -> 23424 bytes ...d06a1ea9361bdcf0b442d06a18a8051af57456.ttf | Bin 0 -> 45404 bytes ...a0cda5a44c4039214094e7957b4c040ef11c.woff2 | Bin 0 -> 18028 bytes ...872fe1d6a4f6f6da0066da6701b56cdb72ea96.png | Bin 0 -> 1130 bytes ...b41b722a97b93138a9a002091e1e5226d29bf5.png | Bin 0 -> 14496 bytes ...14532c59d498e1fd980ec129fded68da8bb307.png | Bin 0 -> 1440 bytes ...1005aa2615db7ac743e4037364d1021084043.woff | Bin 0 -> 26204 bytes ...bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg | 241 +++++++++++++++ ...934c7422062995738fd9e5715b02f55002d7c0.eot | Bin 0 -> 23109 bytes ...ee60b0217e91e46ec47f96710f70f996b61af1.ttf | Bin 0 -> 49748 bytes ...5aca2a7128c0ca0d640fd504e97bae0b028429.ttf | Bin 0 -> 51172 bytes ...1a7a503683d7afdb68360ed26bfac03e1b3c39.eot | Bin 0 -> 23707 bytes ...1d6ad48a5c6e4670c8fb6160a329fa4758c555.svg | 241 +++++++++++++++ ...d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff | Bin 0 -> 26956 bytes ...5836c99ad989185f5d2a240d60ea14a1b7384a.ttf | Bin 0 -> 57040 bytes ...718486ff5fb416ab01740750db325179e58654.eot | Bin 0 -> 26426 bytes ...8ce4cba00872cf8ac56e299cf1397c146cac3.woff | Bin 0 -> 29884 bytes ...1f85162cee0c4dd0a3840260a2606eefc3e517.svg | 241 +++++++++++++++ ...a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico | Bin 0 -> 1150 bytes ...f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif | Bin 0 -> 564 bytes ...8acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg | 238 +++++++++++++++ ...4aab34f3e68b337be90800db517e4a8d27d001.eot | Bin 0 -> 23124 bytes ...49714757fddba516c5db65e72867504493fbc.woff | Bin 0 -> 26228 bytes ...f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf | Bin 0 -> 47396 bytes ...c67826d5031e6ab040194fdb7365dc83e95557.svg | 238 +++++++++++++++ ...faa26e7855c4292c730429477003b6dab5c08b.ttf | Bin 0 -> 47484 bytes ...860af03c359ed41d348ddb813dbcc3c460eb26.eot | Bin 0 -> 23273 bytes ...c99f1e7941fa91ff21a56550f2039834ee9d0.woff | Bin 0 -> 26492 bytes ...bd45567e5a1f83eeafcf9574da0399d5f602ab.png | Bin 0 -> 180 bytes ...265df288d8eb65dbbd7cf48aed2d0129887df5.png | Bin 0 -> 178 bytes ...6ecfc33e6145c49422443b00ac2b5a0022964c.png | Bin 0 -> 120 bytes ...feccd907953317cd5c0f689901733afda260b2.png | Bin 0 -> 105 bytes ...ddd95e1664597ce6c056ae44c162cc2e28cec4.png | Bin 0 -> 111 bytes ...e90ebe74a84384cb4700658e76e754c8bfe550.png | Bin 0 -> 110 bytes ...5f012869d1ee7c984775a569827a1784d34f5c.png | Bin 0 -> 119 bytes ...80fc633b6f84b87985eb016d25a560e2c38d4a.png | Bin 0 -> 101 bytes ...74422bee7486c8a182d60133728c672f2cdbbc.png | Bin 0 -> 4369 bytes ...8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png | Bin 0 -> 4369 bytes ...699e856a2980753c7a47b66447da5d9f93fb7f.png | Bin 0 -> 4369 bytes ...065f5833e05b97f7a052b1c141e754d62e1a8b.png | Bin 0 -> 4369 bytes ...81550d6412aa207f48468724a6a15402b6041b.png | Bin 0 -> 4369 bytes ...b1eb605798c2e9bd361cf44500f73038832030.png | Bin 0 -> 3417 bytes ...fest-9b19037852267cfe2c60a6bd51485d3f.json | 1 - ...f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif | Bin 0 -> 1566 bytes ...f8acd0e8b16e09790e78f78da96d9f8633ef3b.png | Bin 0 -> 1181 bytes ...84b7df1f827e9aebbade86995e44f0320de332.css | 30 ++ ...548c0dd38c4ee2ad067fe962c06cc7e94d2ddac.js | 170 +++++++++++ ...329c1cb24da923bd357988c120cc5710230cc48.js | 170 +++++++++++ ...07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js | 170 +++++++++++ ...80fdb8595319d31ea237173494e505a5b3751c6.js | 170 +++++++++++ ...06fcf43415a599a19bf0022cf3f9e9d6140a05.css | 30 ++ ...ccaa0b93f86cc789a9595158c98ee51393b8cb9.js | 1 + ...6f24a537dd2e4598238527d232a3e2ea5b5947.png | Bin 0 -> 7089 bytes ...b41b722a97b93138a9a002091e1e5226d29bf5.png | Bin 0 -> 14496 bytes ...08ae3ef726c7378324ac55fd5d378ba3a4dc2d.png | Bin 0 -> 12294 bytes ...6fb92427ae41e4649b934ca495991b7852b855.ico | 0 ...8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png | Bin 0 -> 2439 bytes ...331cd9e5123c9684950bab0406e98a24ac5ae8.png | Bin 0 -> 613 bytes ...ad9b70a3f91120737535dab4d4548a6c83576c.gif | Bin 0 -> 1849 bytes ...08ba1e7198c9c9accfa0b360b78018b9fb9bc2.png | Bin 0 -> 845 bytes ...679237496990148efb3bb9a2a10a2c070be1a7.css | 1 + ...08ae3ef726c7378324ac55fd5d378ba3a4dc2d.png | Bin 0 -> 12294 bytes ...2c579c97f382e5cc43fa111219077e7473fdbb.png | Bin 0 -> 1521 bytes ...6f24a537dd2e4598238527d232a3e2ea5b5947.png | Bin 0 -> 7089 bytes spec/fabricators/pricelist_fabricator.rb | 5 + spec/models/pricelist_spec.rb | 63 ++++ 101 files changed, 3155 insertions(+), 76 deletions(-) create mode 100644 app/controllers/admin/pricelists_controller.rb create mode 100644 app/models/pricelist.rb create mode 100644 app/models/version/pricelist_version.rb create mode 100644 app/views/admin/pricelists/_form.haml create mode 100644 app/views/admin/pricelists/edit.haml create mode 100644 app/views/admin/pricelists/index.haml create mode 100644 app/views/admin/pricelists/new.haml create mode 100644 config/initializers/datetime.rb create mode 100644 config/initializers/money.rb create mode 100644 config/initializers/relaxed_i18n.rb create mode 100644 db/migrate/20150305092921_add_pricelist.rb create mode 100644 db/migrate/20150603141549_add_decimal_type.rb create mode 100644 db/migrate/20150603211318_change_price_to_decimal.rb create mode 100644 db/migrate/20150603212659_add_duration_to_pricelist.rb create mode 100644 public/assets/.sprockets-manifest-777146d8396a4f217ac1f34291da0a5d.json create mode 100644 public/assets/admin-manifest-4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0.css create mode 100644 public/assets/admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js create mode 100644 public/assets/admin-manifest-a1d98585d33f501b3f72a9964749e49845ce9827c3254f31abc689b1cc284877.js create mode 100644 public/assets/admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js create mode 100644 public/assets/alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png create mode 100644 public/assets/bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg create mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot create mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg create mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff create mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf create mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2 create mode 100644 public/assets/danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png create mode 100644 public/assets/development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png create mode 100644 public/assets/eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png create mode 100644 public/assets/etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff create mode 100644 public/assets/etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg create mode 100644 public/assets/etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot create mode 100644 public/assets/etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf create mode 100644 public/assets/etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf create mode 100644 public/assets/etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot create mode 100644 public/assets/etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg create mode 100644 public/assets/etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff create mode 100644 public/assets/etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf create mode 100644 public/assets/etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot create mode 100644 public/assets/etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff create mode 100644 public/assets/etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg create mode 100644 public/assets/favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico create mode 100644 public/assets/id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif create mode 100644 public/assets/infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg create mode 100644 public/assets/infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot create mode 100644 public/assets/infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff create mode 100644 public/assets/infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf create mode 100644 public/assets/infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg create mode 100644 public/assets/infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf create mode 100644 public/assets/infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot create mode 100644 public/assets/infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff create mode 100644 public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png create mode 100644 public/assets/jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png create mode 100644 public/assets/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png create mode 100644 public/assets/jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png create mode 100644 public/assets/jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png create mode 100644 public/assets/jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png create mode 100644 public/assets/jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png create mode 100644 public/assets/jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png create mode 100644 public/assets/lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png delete mode 100644 public/assets/manifest-9b19037852267cfe2c60a6bd51485d3f.json create mode 100644 public/assets/mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif create mode 100644 public/assets/nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png create mode 100644 public/assets/registrant-manifest-5042d2816e8cc296ed38449bd684b7df1f827e9aebbade86995e44f0320de332.css create mode 100644 public/assets/registrant-manifest-9fb37a048a37bc0d0dfa7530d548c0dd38c4ee2ad067fe962c06cc7e94d2ddac.js create mode 100644 public/assets/registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js create mode 100644 public/assets/registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js create mode 100644 public/assets/registrar-manifest-91e58ca08340b0a7792aaec3980fdb8595319d31ea237173494e505a5b3751c6.js create mode 100644 public/assets/registrar-manifest-bffa75923fdda878303aa17da806fcf43415a599a19bf0022cf3f9e9d6140a05.css create mode 100644 public/assets/registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js create mode 100644 public/assets/registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png create mode 100644 public/assets/registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png create mode 100644 public/assets/registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png create mode 100644 public/assets/registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico create mode 100644 public/assets/seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png create mode 100644 public/assets/select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png create mode 100644 public/assets/select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif create mode 100644 public/assets/select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png create mode 100644 public/assets/shared/pdf-f6e83972424c39d3f7ebe55fb4679237496990148efb3bb9a2a10a2c070be1a7.css create mode 100644 public/assets/staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png create mode 100644 public/assets/swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png create mode 100644 public/assets/test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png create mode 100644 spec/fabricators/pricelist_fabricator.rb create mode 100644 spec/models/pricelist_spec.rb diff --git a/Gemfile b/Gemfile index 7a947bb76..2fbb63eb0 100644 --- a/Gemfile +++ b/Gemfile @@ -38,6 +38,7 @@ gem 'nprogress-rails', '~> 0.1.6.7' # visual loader gem 'html5_validators', '~> 1.2.0' # model requements now automatically on html form gem 'coderay', '~> 1.1.0' # xml console visualize gem 'select2-rails', '~> 3.5.9.3' # for autocomplete +gem 'bootstrap-datepicker-rails', '~> 1.3.1.1' # datepicker # rights gem 'devise', '~> 3.4.1' # authenitcation @@ -50,6 +51,7 @@ gem 'jbuilder', '~> 2.2.6' # json api # registry specfic gem 'simpleidn', '~> 0.0.5' # For punycode gem 'isikukood' # for EE-id validation +gem 'money-rails', '~> 1.3.0' # Money helpers # deploy gem 'whenever', '~> 0.9.4', require: false diff --git a/Gemfile.lock b/Gemfile.lock index dbc311d2e..e4b506df3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,18 +76,18 @@ GEM thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) addressable (2.3.8) - akami (1.3.0) + akami (1.3.1) gyoku (>= 0.4.0) nokogiri arel (6.0.0) ast (2.0.0) astrolabe (1.3.0) parser (>= 2.2.0.pre.3, < 3.0) - autodoc (0.4.4) + autodoc (0.5.0) actionpack activesupport (>= 3.0.0) rspec - autoprefixer-rails (5.1.11) + autoprefixer-rails (5.2.0) execjs json axiom-types (0.1.1) @@ -101,6 +101,8 @@ GEM rack (>= 0.9.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) + bootstrap-datepicker-rails (1.3.1.1) + railties (>= 3.0) bootstrap-sass (3.3.4.1) autoprefixer-rails (>= 5.0.0.1) sass (>= 3.2.19) @@ -116,9 +118,9 @@ GEM slim (>= 1.3.6, < 3.0) terminal-table (~> 1.4) builder (3.2.2) - bullet (4.14.4) + bullet (4.14.7) activesupport (>= 3.0.0) - uniform_notifier (>= 1.6.0) + uniform_notifier (~> 1.9.0) bundler-audit (0.3.1) bundler (~> 1.2) thor (~> 0.18) @@ -142,7 +144,7 @@ GEM coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.9.1) + coffee-script-source (1.9.1.1) countries (0.10.0) currencies (~> 0.4.2) crack (0.4.2) @@ -174,13 +176,13 @@ GEM builder (~> 3.2) equalizer (0.0.11) erubis (2.7.0) - execjs (2.5.0) + execjs (2.5.2) fabrication (2.12.2) faker (1.3.0) i18n (~> 0.5) fastercsv (1.5.5) ffi (1.9.8) - figaro (1.1.0) + figaro (1.1.1) thor (~> 0.14) flay (2.4.0) ruby_parser (~> 3.0) @@ -189,7 +191,7 @@ GEM ruby_parser (~> 3.1, > 3.1.0) sexp_processor (~> 4.4) formatador (0.2.5) - globalid (0.3.3) + globalid (0.3.5) activesupport (>= 4.1.0) grape (0.10.1) activesupport @@ -225,11 +227,10 @@ GEM haml (>= 4.0.6, < 5.0) html2haml (>= 1.0.1) railties (>= 4.0.1) - hashie (3.4.1) + hashie (3.4.2) hashie-forbidden_attributes (0.1.1) hashie (>= 3.0) highline (1.6.21) - hike (1.2.3) hitimes (1.2.2) hpricot (0.8.6) html5_validators (1.2.0) @@ -239,20 +240,20 @@ GEM i18n (0.7.0) ice_nine (0.11.1) isikukood (0.1.2) - iso8601 (0.8.5) - jbuilder (2.2.12) + iso8601 (0.8.6) + jbuilder (2.2.16) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) jquery-rails (4.0.3) rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, < 2.0) - jquery-ui-rails (5.0.3) + jquery-ui-rails (5.0.5) railties (>= 3.2.16) jquery-validation-rails (1.13.1) railties (>= 3.2, < 5.0) thor (~> 0.14) - json (1.8.2) + json (1.8.3) kaminari (0.16.3) actionpack (>= 3.0.0) activesupport (>= 3.0.0) @@ -265,7 +266,7 @@ GEM celluloid (~> 0.16.0) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) - loofah (2.0.1) + loofah (2.0.2) nokogiri (>= 1.5.9) lumberjack (1.0.9) macaddr (1.7.1) @@ -273,25 +274,34 @@ GEM mail (2.6.3) mime-types (>= 1.16, < 3) method_source (0.8.2) - mime-types (2.4.3) + mime-types (2.6.1) mina (0.3.4) open4 (~> 1.3.4) rake mini_portile (0.6.2) - minitest (5.5.1) + minitest (5.7.0) + monetize (1.1.0) + money (~> 6.5.0) + money (6.5.1) + i18n (>= 0.6.4, <= 0.7.0) + money-rails (1.3.0) + activesupport (>= 3.0) + monetize (~> 1.1.0) + money (~> 6.5.0) + railties (>= 3.0) multi_json (1.11.0) multi_xml (0.5.5) newrelic_rpm (3.9.9.275) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) - nori (2.5.0) + nori (2.6.0) nprogress-rails (0.1.6.7) open4 (1.3.4) orm_adapter (0.5.0) - parser (2.2.0.3) + parser (2.2.2.5) ast (>= 1.1, < 3.0) pdfkit (0.6.2) - pg (0.18.1) + pg (0.18.2) phantomjs (1.9.7.1) phantomjs-binaries (1.9.2.4) sys-uname (= 0.9.0) @@ -307,7 +317,7 @@ GEM coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) - rack (1.6.0) + rack (1.6.1) rack-accept (0.4.5) rack (>= 0.4) rack-mount (0.8.3) @@ -350,7 +360,7 @@ GEM activesupport (>= 3.0) i18n polyamorous (~> 1.1) - rb-fsevent (0.9.4) + rb-fsevent (0.9.5) rb-inotify (0.9.5) ffi (>= 0.5.0) rdoc (4.2.0) @@ -390,7 +400,7 @@ GEM rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.4) ruby-progressbar (1.7.5) - ruby2ruby (2.1.3) + ruby2ruby (2.1.4) ruby_parser (~> 3.1) sexp_processor (~> 4.0) ruby_parser (3.5.0) @@ -403,7 +413,7 @@ GEM ruby2ruby (>= 2.1.1, < 3.0) virtus (~> 1.0) safe_yaml (1.0.4) - sass (3.4.13) + sass (3.4.14) sass-rails (5.0.3) railties (>= 4.0.0, < 5.0) sass (~> 3.1) @@ -425,7 +435,7 @@ GEM select2-rails (3.5.9.3) thor (~> 0.14) selectize-rails (0.12.1) - sexp_processor (4.5.0) + sexp_processor (4.6.0) shoulda-matchers (2.6.2) activesupport (>= 3.0.0) simplecov (0.9.2) @@ -438,15 +448,12 @@ GEM temple (~> 0.6.9) tilt (>= 1.3.3, < 2.1) slop (3.6.0) - spring (1.3.4) + spring (1.3.6) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - sprockets (2.12.3) - hike (~> 1.2) - multi_json (~> 1.0) + sprockets (3.2.0) rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.2.4) + sprockets-rails (2.3.1) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) @@ -472,12 +479,12 @@ GEM uglifier (2.7.1) execjs (>= 0.3.0) json (>= 1.8.0) - unicorn (4.8.3) + unicorn (4.9.0) kgio (~> 2.6) rack raindrops (~> 0.7) - uniform_notifier (1.8.0) - uuid (2.3.7) + uniform_notifier (1.9.0) + uuid (2.3.8) macaddr (~> 1.0) uuidtools (2.1.5) virtus (1.0.5) @@ -506,6 +513,7 @@ DEPENDENCIES autodoc better_errors (~> 2.0.0) binding_of_caller (~> 0.7.2) + bootstrap-datepicker-rails (~> 1.3.1.1) bootstrap-sass (~> 3.3.4.1) brakeman (~> 2.6.2) bullet (~> 4.14.4) @@ -543,6 +551,7 @@ DEPENDENCIES kaminari (~> 0.16.3) launchy (~> 2.4.3) mina (~> 0.3.1) + money-rails (~> 1.3.0) newrelic_rpm (~> 3.9.9.275) nokogiri (~> 1.6.6.2) nprogress-rails (~> 0.1.6.7) diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index 883a2aadc..df3af084c 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -2,8 +2,6 @@ #= require jquery_ujs #= require turbolinks #= require bootstrap-sprockets -#= require nprogress -#= require nprogress-turbolinks #= require typeahead.bundle.min #= require admin/autocomplete #= require jquery.nested_attributes @@ -12,6 +10,3 @@ #= require jquery-ui/datepicker #= require shared/general #= require admin/application - -NProgress.configure - showSpinner: false diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee index 89c4a752d..523876df7 100644 --- a/app/assets/javascripts/admin/application.coffee +++ b/app/assets/javascripts/admin/application.coffee @@ -1,12 +1,16 @@ -ready = -> +$(document).on 'page:change', -> $('.selectize').selectize({ allowEmptyOption: true - }); + }) + + $('.js-datepicker').datepicker({ + showAnim: "", + autoclose: true, + dateFormat: "dd.mm.yy", + changeMonth: true, + changeYear: true + }) # client side validate all forms $('form').each -> $(this).validate() - - -$(document).ready(ready) -$(document).on('page:load', ready) diff --git a/app/assets/javascripts/registrar/application.coffee b/app/assets/javascripts/registrar/application.coffee index 91a5ce7fa..9dda64de6 100644 --- a/app/assets/javascripts/registrar/application.coffee +++ b/app/assets/javascripts/registrar/application.coffee @@ -1,4 +1,4 @@ -$(document).on 'ready page:load', -> +$(document).on 'page:change', -> # client side validate all forms $('form').each -> $(this).validate() diff --git a/app/assets/javascripts/shared/general.coffee b/app/assets/javascripts/shared/general.coffee index bbcbc970e..db6e371c3 100644 --- a/app/assets/javascripts/shared/general.coffee +++ b/app/assets/javascripts/shared/general.coffee @@ -1,3 +1,9 @@ +#= require nprogress +#= require nprogress-turbolinks + +NProgress.configure + showSpinner: false + @flash_notice = (msg) -> $('#flash').find('div').removeClass('bg-danger') $('#flash').find('div').addClass('bg-success') @@ -10,7 +16,7 @@ $('#flash').find('div').html(msg) $('#flash').show() -$(document).on 'ready page:load', -> +$(document).on 'page:change', -> today = new Date() tomorrow = new Date(today) tomorrow.setDate(today.getDate() + 1) @@ -20,7 +26,8 @@ $(document).on 'ready page:load', -> maxDate: tomorrow ) - $('.js-combobox').select2 - width: "100%" - selectOnBlur: true - dropdownAutoWidth: if self==top then true else false + if $('.js-combobox').length + $('.js-combobox').select2 + width: "100%" + selectOnBlur: true + dropdownAutoWidth: if self==top then true else false diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index c906f8c70..b93e65268 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -1,5 +1,6 @@ //= require 'shared/general-manifest' //= require 'admin/admin-bootstrap' +//= require 'jquery-ui/datepicker' @import shared/fonts @import shared/general @import nprogress @@ -7,4 +8,5 @@ @import typeaheadjs @import selectize @import selectize.bootstrap3 +// @import bootstrap-datepicker3 @import admin/admin diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb new file mode 100644 index 000000000..a0fa2c010 --- /dev/null +++ b/app/controllers/admin/pricelists_controller.rb @@ -0,0 +1,44 @@ +class Admin::PricelistsController < AdminController + load_and_authorize_resource + before_action :set_pricelist, only: [:show, :edit, :update] + + def index + @q = Pricelist.search(params[:q]) + @pricelists = @q.result.page(params[:page]) + end + + def new + @pricelist = Pricelist.new + end + + def edit + end + + def create + @pricelist = Pricelist.new(pricelist_params) + + if @pricelist.save + redirect_to admin_pricelists_url + else + render 'new' + end + end + + def update + if @pricelist.update_attributes(pricelist_params) + redirect_to admin_pricelists_url + else + render 'edit' + end + end + + private + + def set_pricelist + @pricelist = Pricelist.find(params[:id]) + end + + def pricelist_params + params.require(:pricelist).permit(:category, :name, :duration, :price, :valid_from, :valid_to) + end +end diff --git a/app/models/ability.rb b/app/models/ability.rb index 79dcb991a..3c641fdcb 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -107,6 +107,7 @@ class Ability can :manage, Setting can :manage, ZonefileSetting can :manage, DomainVersion + can :manage, Pricelist can :manage, User can :manage, ApiUser can :manage, AdminUser diff --git a/app/models/pricelist.rb b/app/models/pricelist.rb new file mode 100644 index 000000000..12a567a95 --- /dev/null +++ b/app/models/pricelist.rb @@ -0,0 +1,16 @@ +class Pricelist < ActiveRecord::Base + include Versions # version/pricelist_version.rb + + monetize :price_cents + + validates :price_cents, :price_currency, :valid_from, :category, presence: true + + CATEGORIES = %w(ee com.ee fie.ee pri.ee med.ee) + DURATIONS = %w(1year 2years 3years) + + after_initialize :init_values + def init_values + return unless new_record? + self.valid_from = Time.zone.now.beginning_of_year + end +end diff --git a/app/models/version/pricelist_version.rb b/app/models/version/pricelist_version.rb new file mode 100644 index 000000000..cd86f6064 --- /dev/null +++ b/app/models/version/pricelist_version.rb @@ -0,0 +1,4 @@ +class PricelistVersion < PaperTrail::Version + self.table_name = :log_pricelists + self.sequence_name = :log_pricelists_id_seq +end diff --git a/app/views/admin/pricelists/_form.haml b/app/views/admin/pricelists/_form.haml new file mode 100644 index 000000000..0472b0267 --- /dev/null +++ b/app/views/admin/pricelists/_form.haml @@ -0,0 +1,33 @@ += form_for([:admin, @pricelist], multipart: true) do |f| + = render 'shared/errors', object: f.object + + .row + .col-md-6 + .form-group + = f.label :category, t(:category) + = f.select(:category, Pricelist::CATEGORIES, {}, { class: 'form-control' }) + .form-group + = f.label :name + = f.text_field(:name, class: 'form-control') + .form-group + = f.label :duration + = f.select(:duration, Pricelist::DURATIONS, {}, { class: 'form-control' }) + .form-group + = f.label :price + .input-group + = f.text_field(:price, class: 'form-control') + %span.input-group-addon= Money.default_currency + .form-group.input-daterange + = f.label :valid_from, t(:valid) + .input-group + = f.text_field(:valid_from, value: f.object.valid_from.try(:to_s, :dshort), + class: 'form-control js-datepicker') + %span.input-group-addon - + = f.text_field(:valid_to, value: f.object.valid_to.try(:to_s, :dshort), + class: 'form-control js-datepicker') + + %hr + .row + .col-md-12.text-right + = button_tag(t(:save), class: 'btn btn-primary') + diff --git a/app/views/admin/pricelists/edit.haml b/app/views/admin/pricelists/edit.haml new file mode 100644 index 000000000..329f7979b --- /dev/null +++ b/app/views/admin/pricelists/edit.haml @@ -0,0 +1,6 @@ +.row + .col-sm-6 + %h2.text-center-xs= "#{t(:edit)}: #{@pricelist.name}" + +%hr += render 'form' diff --git a/app/views/admin/pricelists/index.haml b/app/views/admin/pricelists/index.haml new file mode 100644 index 000000000..2116222c8 --- /dev/null +++ b/app/views/admin/pricelists/index.haml @@ -0,0 +1,57 @@ +.row + .col-sm-6 + %h2.text-center-xs= t(:pricelists) + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t(:new), new_admin_pricelist_path, class: 'btn btn-primary') + +%hr +-# .row + -# .col-md-12 + -# = form_tag admin_pricelists_path, html: { class: 'form-horizontal' } do + -# .col-md-11 + -# .form-group + -# = search_field_tag :name_cont, class: 'form-control' + -# .col-md-1.text-right.text-center-xs + -# .form-group + -# %button.btn.btn-primary + -#   + -# %span.glyphicon.glyphicon-search + -#   + +%hr +.row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-2'} + = sort_link(@q, 'category', t(:category)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'duration', t(:duration)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'name', t(:name)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'price', t(:price)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'valid_from', t(:valid_from)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'valid_to', t(:valid_to)) + %th{class: 'col-xs-2'} + = t(:action) + + %tbody + - @pricelists.each do |pricelist| + %tr + %td= pricelist.category + %td= pricelist.duration + %td= pricelist.name + %td= pricelist.price + %td= l(pricelist.valid_from, format: :ydate) + %td= l(pricelist.valid_to, format: :ydate) + %td= link_to(t(:edit), edit_admin_pricelist_path(pricelist), class: 'btn btn-xs btn-primary') + +.row + .col-md-12 + = paginate @pricelists diff --git a/app/views/admin/pricelists/new.haml b/app/views/admin/pricelists/new.haml new file mode 100644 index 000000000..fb56f2aaf --- /dev/null +++ b/app/views/admin/pricelists/new.haml @@ -0,0 +1,3 @@ +%h2= t(:new_price) +%hr += render 'form' diff --git a/app/views/layouts/admin/application.haml b/app/views/layouts/admin/application.haml index 016ebd3b7..917e9b635 100644 --- a/app/views/layouts/admin/application.haml +++ b/app/views/layouts/admin/application.haml @@ -51,12 +51,17 @@ %li= link_to t(:admin_users), admin_admin_users_path %li.divider %li.dropdown-header= t(:billing) + - if can? :view, Pricelist + %li= link_to t(:pricelists), admin_pricelists_path %li= link_to t(:bank_statements), admin_bank_statements_path %li= link_to t(:invoices), admin_invoices_path %li.divider %li.dropdown-header= t(:system) %li= link_to t(:settings), admin_settings_path %li= link_to t(:zonefile), admin_zonefile_settings_path + %li.dropdown-header= t(:system) + %li= link_to t(:settings), admin_settings_path + %li= link_to t(:zonefile), admin_zonefile_settings_path -# %li= link_to t(:domains_history), admin_domain_versions_path %li= link_to t(:epp_logs), admin_epp_logs_path %li= link_to t(:repp_logs), admin_repp_logs_path diff --git a/config/initializers/datetime.rb b/config/initializers/datetime.rb new file mode 100644 index 000000000..cf4f747e2 --- /dev/null +++ b/config/initializers/datetime.rb @@ -0,0 +1,3 @@ +# Some handy day formats +Date::DATE_FORMATS[:dshort] = "%d.%m.%Y" +Time::DATE_FORMATS[:dshort] = "%d.%m.%Y" diff --git a/config/initializers/money.rb b/config/initializers/money.rb new file mode 100644 index 000000000..30df8eadf --- /dev/null +++ b/config/initializers/money.rb @@ -0,0 +1,70 @@ +# encoding : utf-8 + +MoneyRails.configure do |config| + + # To set the default currency + # + config.default_currency = :eur + + # Set default bank object + # + # Example: + # config.default_bank = EuCentralBank.new + + # Add exchange rates to current money bank object. + # (The conversion rate refers to one direction only) + # + # Example: + # config.add_rate "USD", "CAD", 1.24515 + # config.add_rate "CAD", "USD", 0.803115 + + # To handle the inclusion of validations for monetized fields + # The default value is true + # + # config.include_validations = true + + # Default ActiveRecord migration configuration values for columns: + # + # config.amount_column = { prefix: '', # column name prefix + # postfix: '_cents', # column name postfix + # column_name: nil, # full column name (overrides prefix, postfix and accessor name) + # type: :integer, # column type + # present: true, # column will be created + # null: false, # other options will be treated as column options + # default: 0 + # } + # + # config.currency_column = { prefix: '', + # postfix: '_currency', + # column_name: nil, + # type: :string, + # present: true, + # null: false, + # default: 'USD' + # } + + # Register a custom currency + # + # Example: + # config.register_currency = { + # :priority => 1, + # :iso_code => "EU4", + # :name => "Euro with subunit of 4 digits", + # :symbol => "€", + # :symbol_first => true, + # :subunit => "Subcent", + # :subunit_to_unit => 10000, + # :thousands_separator => ".", + # :decimal_mark => "," + # } + + # Set default money format globally. + # Default value is nil meaning "ignore this option". + # Example: + # + # config.default_format = { + # :no_cents_if_whole => nil, + # :symbol => nil, + # :sign_before_symbol => nil + # } +end diff --git a/config/initializers/relaxed_i18n.rb b/config/initializers/relaxed_i18n.rb new file mode 100644 index 000000000..ca9d0c034 --- /dev/null +++ b/config/initializers/relaxed_i18n.rb @@ -0,0 +1,11 @@ +# Don't raise error when nil +# http://stackoverflow.com/questions/9467034/rails-i18n-how-to-handle-case-of-a-nil-date-being-passed-ie-lnil +module I18n + class << self + alias_method :original_localize, :localize + + def localize object, options = {} + object.present? ? original_localize(object, options) : '' + end + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 9203bf6ff..2d4f14d66 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -24,7 +24,7 @@ en: short: "%d.%m.%y, %H:%M" date: "%d.%m.%y" date_long: "%d. %B %Y" - + ydate: "%Y.%m.%d" date: formats: year_and_month: "%Y %B" @@ -812,3 +812,7 @@ en: webserver_client_cert_directive_should_be_required: 'Webserver client cert directive should be required' tech: Tech contact admin: Admin contact + pricelists: Pricelists + new_pricelist: New Pricelist + valid: Valid + category: Zone diff --git a/config/routes.rb b/config/routes.rb index c8d4e0b0e..f0b0dabeb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -154,14 +154,11 @@ Rails.application.routes.draw do # ADMIN ROUTES namespace :admin do resources :keyrelays - resources :zonefiles - resources :zonefile_settings - resources :legal_documents - resources :keyrelays + resources :pricelists resources :bank_statements do post 'bind_invoices', on: :member diff --git a/db/migrate/20150305092921_add_pricelist.rb b/db/migrate/20150305092921_add_pricelist.rb new file mode 100644 index 000000000..fc327a579 --- /dev/null +++ b/db/migrate/20150305092921_add_pricelist.rb @@ -0,0 +1,25 @@ +class AddPricelist < ActiveRecord::Migration + def change + create_table :pricelists do |t| + t.string :name + t.string :category + t.monetize :price + t.datetime :valid_from + t.datetime :valid_to + t.string :creator_str + t.string :updator_str + t.timestamps null: false + end + + create_table :log_pricelists do |t| + t.string :item_type, null: false + t.integer :item_id, null: false + t.string :event, null: false + t.string :whodunnit + t.json :object + t.json :object_changes + t.datetime :created_at + t.string :session + end + end +end diff --git a/db/migrate/20150603141549_add_decimal_type.rb b/db/migrate/20150603141549_add_decimal_type.rb new file mode 100644 index 000000000..64b166287 --- /dev/null +++ b/db/migrate/20150603141549_add_decimal_type.rb @@ -0,0 +1,16 @@ +class AddDecimalType < ActiveRecord::Migration + def change + { + 'account_activities': ['sum'], + 'accounts': ['balance'], + 'bank_transactions': ['sum'], + 'banklink_transactions': ['vk_amount'], + 'invoice_items': ['price'], + 'invoices': ['vat_prc', 'sum_cache'] + }.each do |table, cols| + cols.each do |col| + change_column table, col, :decimal, precision: 8, scale: 2 + end + end + end +end diff --git a/db/migrate/20150603211318_change_price_to_decimal.rb b/db/migrate/20150603211318_change_price_to_decimal.rb new file mode 100644 index 000000000..1937a642c --- /dev/null +++ b/db/migrate/20150603211318_change_price_to_decimal.rb @@ -0,0 +1,5 @@ +class ChangePriceToDecimal < ActiveRecord::Migration + def change + change_column :pricelists, :price_cents, :decimal, precision: 8, scale: 2 + end +end diff --git a/db/migrate/20150603212659_add_duration_to_pricelist.rb b/db/migrate/20150603212659_add_duration_to_pricelist.rb new file mode 100644 index 000000000..05342c6cd --- /dev/null +++ b/db/migrate/20150603212659_add_duration_to_pricelist.rb @@ -0,0 +1,5 @@ +class AddDurationToPricelist < ActiveRecord::Migration + def change + add_column :pricelists, :duration, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 3f0236f3d..48396524a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150525075550) do +ActiveRecord::Schema.define(version: 20150603212659) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -19,7 +19,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do create_table "account_activities", force: :cascade do |t| t.integer "account_id" t.integer "invoice_id" - t.decimal "sum" + t.decimal "sum", precision: 10, scale: 2 t.string "currency" t.integer "bank_transaction_id" t.datetime "created_at" @@ -36,7 +36,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do create_table "accounts", force: :cascade do |t| t.integer "registrar_id" t.string "account_type" - t.decimal "balance", default: 0.0, null: false + t.decimal "balance", precision: 10, scale: 2, default: 0.0, null: false t.datetime "created_at" t.datetime "updated_at" t.string "currency" @@ -98,7 +98,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do t.string "buyer_name" t.string "document_no" t.string "description" - t.decimal "sum" + t.decimal "sum", precision: 10, scale: 2 t.string "reference_no" t.datetime "paid_at" t.datetime "created_at" @@ -114,7 +114,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do t.string "vk_rec_id" t.string "vk_stamp" t.string "vk_t_no" - t.decimal "vk_amount" + t.decimal "vk_amount", precision: 10, scale: 2 t.string "vk_curr" t.string "vk_rec_acc" t.string "vk_rec_name" @@ -328,10 +328,10 @@ ActiveRecord::Schema.define(version: 20150525075550) do create_table "invoice_items", force: :cascade do |t| t.integer "invoice_id" - t.string "description", null: false + t.string "description", null: false t.string "unit" t.integer "amount" - t.decimal "price" + t.decimal "price", precision: 10, scale: 2 t.datetime "created_at" t.datetime "updated_at" t.string "creator_str" @@ -341,20 +341,20 @@ ActiveRecord::Schema.define(version: 20150525075550) do add_index "invoice_items", ["invoice_id"], name: "index_invoice_items_on_invoice_id", using: :btree create_table "invoices", force: :cascade do |t| - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "invoice_type", null: false - t.datetime "due_date", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "invoice_type", null: false + t.datetime "due_date", null: false t.string "payment_term" - t.string "currency", null: false + t.string "currency", null: false t.string "description" t.string "reference_no" - t.decimal "vat_prc", null: false + t.decimal "vat_prc", precision: 10, scale: 2, null: false t.datetime "paid_at" t.integer "seller_id" - t.string "seller_name", null: false + t.string "seller_name", null: false t.string "seller_reg_no" - t.string "seller_iban", null: false + t.string "seller_iban", null: false t.string "seller_bank" t.string "seller_swift" t.string "seller_vat_no" @@ -368,7 +368,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do t.string "seller_email" t.string "seller_contact_name" t.integer "buyer_id" - t.string "buyer_name", null: false + t.string "buyer_name", null: false t.string "buyer_reg_no" t.string "buyer_country_code" t.string "buyer_state" @@ -382,7 +382,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do t.string "updator_str" t.integer "number" t.datetime "cancelled_at" - t.decimal "sum_cache" + t.decimal "sum_cache", precision: 10, scale: 2 end add_index "invoices", ["buyer_id"], name: "index_invoices_on_buyer_id", using: :btree @@ -741,6 +741,17 @@ ActiveRecord::Schema.define(version: 20150525075550) do add_index "log_nameservers", ["item_type", "item_id"], name: "index_log_nameservers_on_item_type_and_item_id", using: :btree add_index "log_nameservers", ["whodunnit"], name: "index_log_nameservers_on_whodunnit", using: :btree + create_table "log_pricelists", force: :cascade do |t| + t.string "item_type", null: false + t.integer "item_id", null: false + t.string "event", null: false + t.string "whodunnit" + t.json "object" + t.json "object_changes" + t.datetime "created_at" + t.string "session" + end + create_table "log_registrars", force: :cascade do |t| t.string "item_type", null: false t.integer "item_id", null: false @@ -874,6 +885,20 @@ ActiveRecord::Schema.define(version: 20150525075550) do add_index "people", ["email"], name: "index_people_on_email", unique: true, using: :btree add_index "people", ["reset_password_token"], name: "index_people_on_reset_password_token", unique: true, using: :btree + create_table "pricelists", force: :cascade do |t| + t.string "name" + t.string "category" + t.decimal "price_cents", precision: 8, scale: 2, default: 0.0, null: false + t.string "price_currency", default: "EUR", null: false + t.datetime "valid_from" + t.datetime "valid_to" + t.string "creator_str" + t.string "updator_str" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "duration" + end + create_table "registrant_verifications", force: :cascade do |t| t.string "domain_name" t.string "verification_token" @@ -957,7 +982,7 @@ ActiveRecord::Schema.define(version: 20150525075550) do t.text "crt" t.string "type" t.string "registrant_ident" - t.string "encrypted_password", default: "", null: false + t.string "encrypted_password", default: "" t.datetime "remember_created_at" t.integer "failed_attempts", default: 0, null: false t.datetime "locked_at" diff --git a/public/assets/.sprockets-manifest-777146d8396a4f217ac1f34291da0a5d.json b/public/assets/.sprockets-manifest-777146d8396a4f217ac1f34291da0a5d.json new file mode 100644 index 000000000..34f77ab8b --- /dev/null +++ b/public/assets/.sprockets-manifest-777146d8396a4f217ac1f34291da0a5d.json @@ -0,0 +1 @@ +{"files":{"alpha-0ca6e1b4c58bac2800936ad023a1488e.png":{"logical_path":"alpha.png","mtime":"2015-02-03T16:52:02+02:00","size":7089,"digest":"0ca6e1b4c58bac2800936ad023a1488e"},"development-0107cbd9200b233a56713bdb4643eace.png":{"logical_path":"development.png","mtime":"2015-02-03T16:52:02+02:00","size":14496,"digest":"0107cbd9200b233a56713bdb4643eace"},"staging-5b1d74e291541214457521dd0c14f6a2.png":{"logical_path":"staging.png","mtime":"2015-02-03T16:52:02+02:00","size":12294,"digest":"5b1d74e291541214457521dd0c14f6a2"},"application-805c69cec6ea75185028b7e45efee5fd.js":{"logical_path":"application.js","mtime":"2015-02-03T16:52:02+02:00","size":233509,"digest":"805c69cec6ea75185028b7e45efee5fd"},"application-993e676726143d5ead2f8840bc8894a7.css":{"logical_path":"application.css","mtime":"2015-02-03T16:52:02+02:00","size":135007,"digest":"993e676726143d5ead2f8840bc8894a7"},"login-3546bfbfa6594a3ce191938a5e6d3066.css":{"logical_path":"login.css","mtime":"2015-02-03T16:52:02+02:00","size":137,"digest":"3546bfbfa6594a3ce191938a5e6d3066"},"bootstrap/glyphicons-halflings-regular-24b5f16fe2187cf515fc8a2babbd55da.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-01-08T16:11:23+02:00","size":20335,"digest":"24b5f16fe2187cf515fc8a2babbd55da"},"bootstrap/glyphicons-halflings-regular-d0edb6d81c8df5ba60f44915ba986aa7.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-01-08T16:11:23+02:00","size":62926,"digest":"d0edb6d81c8df5ba60f44915ba986aa7"},"bootstrap/glyphicons-halflings-regular-10c46f3d2df6eb4ec8b4f4a06a937419.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-01-08T16:11:23+02:00","size":41280,"digest":"10c46f3d2df6eb4ec8b4f4a06a937419"},"bootstrap/glyphicons-halflings-regular-57dc61ddc965a9efa6e70b9d954a55fe.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-01-08T16:11:23+02:00","size":23320,"digest":"57dc61ddc965a9efa6e70b9d954a55fe"},"alpha-618f9900becef747a5a6952555e4b204.png":{"logical_path":"alpha.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"618f9900becef747a5a6952555e4b204"},"bg-f28afe55c5adffacf7b5452a6cae24c3.jpg":{"logical_path":"bg.jpg","mtime":"2015-03-30T11:10:52+03:00","size":69058,"digest":"f28afe55c5adffacf7b5452a6cae24c3"},"danske-3020934087f46316fd6ec2658033dab5.png":{"logical_path":"danske.png","mtime":"2015-04-14T17:25:27+03:00","size":1130,"digest":"3020934087f46316fd6ec2658033dab5"},"development-5cc9f2ddbd534e45e24078e203c7e01f.png":{"logical_path":"development.png","mtime":"2015-04-30T12:07:54+03:00","size":14496,"digest":"5cc9f2ddbd534e45e24078e203c7e01f"},"eis-logo-et-11d876ece7adf9172797bb174a79317f.png":{"logical_path":"eis-logo-et.png","mtime":"2015-04-14T17:25:27+03:00","size":1440,"digest":"11d876ece7adf9172797bb174a79317f"},"favicon-13c3c3833d62abd4e04a44220c8b1429.ico":{"logical_path":"favicon.ico","mtime":"2015-03-30T11:10:52+03:00","size":1150,"digest":"13c3c3833d62abd4e04a44220c8b1429"},"id_card-0024eba53ea49330fdcbda89bb371814.gif":{"logical_path":"id_card.gif","mtime":"2015-03-30T11:10:52+03:00","size":564,"digest":"0024eba53ea49330fdcbda89bb371814"},"lhv-011c68ea1402f858ba75e8a4050b5ca6.png":{"logical_path":"lhv.png","mtime":"2015-04-14T17:25:27+03:00","size":3417,"digest":"011c68ea1402f858ba75e8a4050b5ca6"},"mid-ed85374018c6f0889935b0682fa84642.gif":{"logical_path":"mid.gif","mtime":"2015-03-30T11:10:52+03:00","size":1566,"digest":"ed85374018c6f0889935b0682fa84642"},"nordea-2b47cfab5337c041fe49db79a1f69979.png":{"logical_path":"nordea.png","mtime":"2015-04-14T17:25:27+03:00","size":1181,"digest":"2b47cfab5337c041fe49db79a1f69979"},"registrar/bg-alpha-618f9900becef747a5a6952555e4b204.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"618f9900becef747a5a6952555e4b204"},"registrar/bg-development-5cc9f2ddbd534e45e24078e203c7e01f.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-04-13T10:48:57+03:00","size":14496,"digest":"5cc9f2ddbd534e45e24078e203c7e01f"},"registrar/bg-staging-26368b05bc701be6495a3cdad27593a3.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-04-30T12:07:54+03:00","size":12294,"digest":"26368b05bc701be6495a3cdad27593a3"},"registrar/favicon-7015acab0e7ee10d673b8d49cecfb54b.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-04-30T12:07:30+03:00","size":0,"digest":"7015acab0e7ee10d673b8d49cecfb54b"},"seb-7fc1e0a48b927e8afc437addf852fcc1.png":{"logical_path":"seb.png","mtime":"2015-04-14T17:25:27+03:00","size":2439,"digest":"7fc1e0a48b927e8afc437addf852fcc1"},"staging-26368b05bc701be6495a3cdad27593a3.png":{"logical_path":"staging.png","mtime":"2015-04-30T12:07:54+03:00","size":12294,"digest":"26368b05bc701be6495a3cdad27593a3"},"swed-4119c3462bfd9d768705f978bd0b8725.png":{"logical_path":"swed.png","mtime":"2015-04-14T17:25:27+03:00","size":1521,"digest":"4119c3462bfd9d768705f978bd0b8725"},"test-618f9900becef747a5a6952555e4b204.png":{"logical_path":"test.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"618f9900becef747a5a6952555e4b204"},"admin-manifest-81244fbcb2941dbf2b9cc6e7ad480060.js":{"logical_path":"admin-manifest.js","mtime":"2015-05-12T12:16:20+03:00","size":712371,"digest":"81244fbcb2941dbf2b9cc6e7ad480060"},"admin/application-187f808aa45da0795ce5d28f48e7970f.js":{"logical_path":"admin/application.js","mtime":"2015-04-20T16:41:29+03:00","size":289,"digest":"187f808aa45da0795ce5d28f48e7970f"},"registrant-manifest-1f30b53c57759af9a47c8a210e17c8a5.js":{"logical_path":"registrant-manifest.js","mtime":"2015-05-13T11:52:45+03:00","size":718718,"digest":"1f30b53c57759af9a47c8a210e17c8a5"},"registrar-manifest-1f30b53c57759af9a47c8a210e17c8a5.js":{"logical_path":"registrar-manifest.js","mtime":"2015-05-12T12:15:59+03:00","size":718718,"digest":"1f30b53c57759af9a47c8a210e17c8a5"},"registrar/application-80cb2a349e82ee26e038257ddce8642e.js":{"logical_path":"registrar/application.js","mtime":"2015-04-20T17:13:49+03:00","size":1084,"digest":"80cb2a349e82ee26e038257ddce8642e"},"admin-manifest-fceb6abfb995546297fca8180e251217.css":{"logical_path":"admin-manifest.css","mtime":"2015-05-15T09:58:24+03:00","size":393721,"digest":"fceb6abfb995546297fca8180e251217"},"registrant-manifest-3938764b3ef6aea7b5bc22b4969e7af0.css":{"logical_path":"registrant-manifest.css","mtime":"2015-05-19T11:21:41+03:00","size":474001,"digest":"3938764b3ef6aea7b5bc22b4969e7af0"},"registrar-manifest-622732055d28fda17d8cbfc1d00d4806.css":{"logical_path":"registrar-manifest.css","mtime":"2015-05-15T09:58:24+03:00","size":457291,"digest":"622732055d28fda17d8cbfc1d00d4806"},"shared/pdf-677bbf85989f907b03f3fca7c62b33dc.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-12T12:15:59+03:00","size":351670,"digest":"677bbf85989f907b03f3fca7c62b33dc"},"etelkalight-webfont-ed13fffbfc3953a032a4c3671b8467cd.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23109,"digest":"ed13fffbfc3953a032a4c3671b8467cd"},"etelkalight-webfont-7b1d2e2c635f04f583288fdf8f18deee.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":64768,"digest":"7b1d2e2c635f04f583288fdf8f18deee"},"etelkalight-webfont-0683b4d48ff1eee498ca094abbcecd6d.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":49748,"digest":"0683b4d48ff1eee498ca094abbcecd6d"},"etelkalight-webfont-72416c26c35dbd939703bfb1826ff2a8.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26204,"digest":"72416c26c35dbd939703bfb1826ff2a8"},"etelkalightbold-webfont-dc2ee659eefb7289fe8f2ff6baa37445.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23707,"digest":"dc2ee659eefb7289fe8f2ff6baa37445"},"etelkalightbold-webfont-bca484302b45333b390c3123614d2c1c.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":62829,"digest":"bca484302b45333b390c3123614d2c1c"},"etelkalightbold-webfont-821515fbb533b1135c8631936ffa5531.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":51172,"digest":"821515fbb533b1135c8631936ffa5531"},"etelkalightbold-webfont-0139c92ba83bc3743826c80b554bbda3.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26956,"digest":"0139c92ba83bc3743826c80b554bbda3"},"etelkalightitalic-webfont-b12af89a8321d427c136e5ce99409b07.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":26426,"digest":"b12af89a8321d427c136e5ce99409b07"},"etelkalightitalic-webfont-776d2dfa86c8119fd8cb78bfe57b1e47.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":69857,"digest":"776d2dfa86c8119fd8cb78bfe57b1e47"},"etelkalightitalic-webfont-e9186197cc519611c84d7ac71ebbd2e5.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":57040,"digest":"e9186197cc519611c84d7ac71ebbd2e5"},"etelkalightitalic-webfont-a8908cc11ab9d731b6227c8b2fb05b73.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":29884,"digest":"a8908cc11ab9d731b6227c8b2fb05b73"},"infotexb-webfont-fb2fa9574b264dcc30a2050682bd52f4.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23124,"digest":"fb2fa9574b264dcc30a2050682bd52f4"},"infotexb-webfont-150d985c9a021dbe3bd6053372609118.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":90188,"digest":"150d985c9a021dbe3bd6053372609118"},"infotexb-webfont-e738890c5d7af17632fa84dc9b42c747.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":47396,"digest":"e738890c5d7af17632fa84dc9b42c747"},"infotexb-webfont-f112d498df4b5d3710bd40cc9e5781af.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26228,"digest":"f112d498df4b5d3710bd40cc9e5781af"},"infotexm-webfont-ca44c79c0f8d796b0b7d9b104abe4e17.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23273,"digest":"ca44c79c0f8d796b0b7d9b104abe4e17"},"infotexm-webfont-2c8e72831d6e851d286ff79afe28aa55.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":90423,"digest":"2c8e72831d6e851d286ff79afe28aa55"},"infotexm-webfont-896292b5af614c36a26744815159b625.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":47484,"digest":"896292b5af614c36a26744815159b625"},"infotexm-webfont-3549a25386cf49af60d984b80006547f.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26492,"digest":"3549a25386cf49af60d984b80006547f"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9f7b44c685ec9eeb173a8f920d4d29b8.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-05-12T11:03:08+03:00","size":180,"digest":"9f7b44c685ec9eeb173a8f920d4d29b8"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-5549a64944ea9f0740ca1db910ff0f5a.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-05-12T11:03:08+03:00","size":178,"digest":"5549a64944ea9f0740ca1db910ff0f5a"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-625ab42eb971ac89ac7e5b803eb7305e.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":120,"digest":"625ab42eb971ac89ac7e5b803eb7305e"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-2825332fdb02e2521bc6deae40a6433a.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":105,"digest":"2825332fdb02e2521bc6deae40a6433a"},"jquery-ui/ui-bg_glass_75_dadada_1x400-01ce21eb3d2c3a1b0fd4c5ceef0a700e.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":111,"digest":"01ce21eb3d2c3a1b0fd4c5ceef0a700e"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-bc720eb664eeca79d17081070f350db8.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":110,"digest":"bc720eb664eeca79d17081070f350db8"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f7a402ed795ce14d3c63a12fa6abecfe.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":119,"digest":"f7a402ed795ce14d3c63a12fa6abecfe"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-cdbb4656bf485d74602d7cf42621b5c2.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-05-12T11:03:08+03:00","size":101,"digest":"cdbb4656bf485d74602d7cf42621b5c2"},"jquery-ui/ui-icons_222222_256x240-2be68d0c61b276fc37fca0dd0e093296.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"2be68d0c61b276fc37fca0dd0e093296"},"jquery-ui/ui-icons_2e83ff_256x240-16b100c149fe2aadb6285e316eee35fa.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"16b100c149fe2aadb6285e316eee35fa"},"jquery-ui/ui-icons_454545_256x240-1c1d485b55c1bded3366a8cfb0a0daed.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"1c1d485b55c1bded3366a8cfb0a0daed"},"jquery-ui/ui-icons_888888_256x240-ed6c5b2703aba1e014120179504ddabb.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"ed6c5b2703aba1e014120179504ddabb"},"jquery-ui/ui-icons_cd0a0a_256x240-c5af554b5a90164d2c67a06d5cb9454a.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"c5af554b5a90164d2c67a06d5cb9454a"},"select2-spinner-0cb5e73ef8c0669f910bf9ce3d62c516.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-12T11:05:57+03:00","size":1849,"digest":"0cb5e73ef8c0669f910bf9ce3d62c516"},"select2-7a233a3c56945673c6c1ebcbd205c1fd.png":{"logical_path":"select2.png","mtime":"2015-05-12T11:05:57+03:00","size":613,"digest":"7a233a3c56945673c6c1ebcbd205c1fd"},"select2x2-bdabb22531f7e0e104a602d47cb71e30.png":{"logical_path":"select2x2.png","mtime":"2015-05-12T11:05:57+03:00","size":845,"digest":"bdabb22531f7e0e104a602d47cb71e30"},"bootstrap/glyphicons-halflings-regular-8c7e3a81fcfddd99c12fab80bba274c2.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-05-12T12:15:59+03:00","size":20127,"digest":"8c7e3a81fcfddd99c12fab80bba274c2"},"bootstrap/glyphicons-halflings-regular-9aa4cf766b78fa283fc5c65c92bb8de1.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-05-12T12:15:59+03:00","size":108738,"digest":"9aa4cf766b78fa283fc5c65c92bb8de1"},"bootstrap/glyphicons-halflings-regular-3f35157d0fc792b1f0ee8dd82cc8aaf8.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-05-12T12:15:59+03:00","size":45404,"digest":"3f35157d0fc792b1f0ee8dd82cc8aaf8"},"bootstrap/glyphicons-halflings-regular-b501c6ba89bfe0d9af27981a19c9e346.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-05-12T12:15:59+03:00","size":23424,"digest":"b501c6ba89bfe0d9af27981a19c9e346"},"bootstrap/glyphicons-halflings-regular-cde521afb829f829e7fcfabc094dc659.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-05-12T12:15:59+03:00","size":18028,"digest":"cde521afb829f829e7fcfabc094dc659"},"alpha-84eeebabe667b9b75b7b050eeee16eeb.png":{"logical_path":"alpha.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"84eeebabe667b9b75b7b050eeee16eeb"},"bg-841fa022251d290635254dbbc3097daf.jpg":{"logical_path":"bg.jpg","mtime":"2015-04-30T12:07:54+03:00","size":69058,"digest":"841fa022251d290635254dbbc3097daf"},"danske-fa2a4fcd35b59cb1255f800185840276.png":{"logical_path":"danske.png","mtime":"2015-04-30T12:07:54+03:00","size":1130,"digest":"fa2a4fcd35b59cb1255f800185840276"},"development-d24ec62be8078e61a3c656b83fa8fe9b.png":{"logical_path":"development.png","mtime":"2015-04-30T12:07:54+03:00","size":14496,"digest":"d24ec62be8078e61a3c656b83fa8fe9b"},"eis-logo-et-fd17d396191bd4e667509390f1922892.png":{"logical_path":"eis-logo-et.png","mtime":"2015-04-30T12:07:54+03:00","size":1440,"digest":"fd17d396191bd4e667509390f1922892"},"favicon-2435a1ee9e9dfca133abbca02619c8d9.ico":{"logical_path":"favicon.ico","mtime":"2015-04-30T12:07:54+03:00","size":1150,"digest":"2435a1ee9e9dfca133abbca02619c8d9"},"id_card-9926a89250d68222f45669dd7984c90d.gif":{"logical_path":"id_card.gif","mtime":"2015-04-30T12:07:54+03:00","size":564,"digest":"9926a89250d68222f45669dd7984c90d"},"lhv-5114f0bee2d3c70c47403f17e9d287e8.png":{"logical_path":"lhv.png","mtime":"2015-04-30T12:07:54+03:00","size":3417,"digest":"5114f0bee2d3c70c47403f17e9d287e8"},"mid-79dabc481b840aac303e5e1cc7dde8c6.gif":{"logical_path":"mid.gif","mtime":"2015-04-30T12:07:54+03:00","size":1566,"digest":"79dabc481b840aac303e5e1cc7dde8c6"},"nordea-87b186d736c3c93685086c13ee0a9f21.png":{"logical_path":"nordea.png","mtime":"2015-04-30T12:07:54+03:00","size":1181,"digest":"87b186d736c3c93685086c13ee0a9f21"},"registrar/bg-alpha-84eeebabe667b9b75b7b050eeee16eeb.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"84eeebabe667b9b75b7b050eeee16eeb"},"registrar/bg-development-d24ec62be8078e61a3c656b83fa8fe9b.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-04-30T12:07:54+03:00","size":14496,"digest":"d24ec62be8078e61a3c656b83fa8fe9b"},"registrar/bg-staging-672bd21ed4b9cb3245ea44f3a2629bf0.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-04-30T12:07:54+03:00","size":12294,"digest":"672bd21ed4b9cb3245ea44f3a2629bf0"},"registrar/favicon-c06dd6a542ea15147e6794e03643f87c.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-04-30T12:07:30+03:00","size":0,"digest":"c06dd6a542ea15147e6794e03643f87c"},"seb-b1fa76625f31c3f4d0b84d450dd4c383.png":{"logical_path":"seb.png","mtime":"2015-04-30T12:07:54+03:00","size":2439,"digest":"b1fa76625f31c3f4d0b84d450dd4c383"},"staging-672bd21ed4b9cb3245ea44f3a2629bf0.png":{"logical_path":"staging.png","mtime":"2015-04-30T12:07:54+03:00","size":12294,"digest":"672bd21ed4b9cb3245ea44f3a2629bf0"},"swed-b9efaf29f99a76ecc01b03803be7a88d.png":{"logical_path":"swed.png","mtime":"2015-04-30T12:07:54+03:00","size":1521,"digest":"b9efaf29f99a76ecc01b03803be7a88d"},"test-84eeebabe667b9b75b7b050eeee16eeb.png":{"logical_path":"test.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"84eeebabe667b9b75b7b050eeee16eeb"},"admin-manifest-6e6fcf039a6b92e085d41d339fec5884.js":{"logical_path":"admin-manifest.js","mtime":"2015-05-12T12:16:20+03:00","size":315161,"digest":"6e6fcf039a6b92e085d41d339fec5884"},"admin/application-6a07f91041ad3f20e1b1d5458955fc91.js":{"logical_path":"admin/application.js","mtime":"2015-04-30T12:07:30+03:00","size":206,"digest":"6a07f91041ad3f20e1b1d5458955fc91"},"registrant-manifest-d9d0c29fad78a10a0c792a1715edd3d5.js":{"logical_path":"registrant-manifest.js","mtime":"2015-05-25T12:59:47+03:00","size":303041,"digest":"d9d0c29fad78a10a0c792a1715edd3d5"},"registrar-manifest-d9d0c29fad78a10a0c792a1715edd3d5.js":{"logical_path":"registrar-manifest.js","mtime":"2015-05-12T12:15:59+03:00","size":303041,"digest":"d9d0c29fad78a10a0c792a1715edd3d5"},"registrar/application-becf26b2259105fe47b50b2d3c80138c.js":{"logical_path":"registrar/application.js","mtime":"2015-04-30T12:07:30+03:00","size":808,"digest":"becf26b2259105fe47b50b2d3c80138c"},"admin-manifest-701249458372f015ab0b876ee831bbb1.css":{"logical_path":"admin-manifest.css","mtime":"2015-05-25T12:59:47+03:00","size":146503,"digest":"701249458372f015ab0b876ee831bbb1"},"registrant-manifest-9d06c365b21295408f3ccd37298efffb.css":{"logical_path":"registrant-manifest.css","mtime":"2015-05-25T12:59:47+03:00","size":190071,"digest":"9d06c365b21295408f3ccd37298efffb"},"registrar-manifest-71050a07965f499a5e7d6973a1389b1b.css":{"logical_path":"registrar-manifest.css","mtime":"2015-05-25T12:59:47+03:00","size":189886,"digest":"71050a07965f499a5e7d6973a1389b1b"},"shared/pdf-ef071ef29698676d4abe7c36b565496f.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-12T12:15:59+03:00","size":119980,"digest":"ef071ef29698676d4abe7c36b565496f"},"etelkalight-webfont-c0ee4f9aa372df807632e0bb0d0c5f44.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23109,"digest":"c0ee4f9aa372df807632e0bb0d0c5f44"},"etelkalight-webfont-49e7a69f10dc2fb97fb75b4b600540fd.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":64768,"digest":"49e7a69f10dc2fb97fb75b4b600540fd"},"etelkalight-webfont-732b53bcc82de772b8fad153dba9e8ce.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":49748,"digest":"732b53bcc82de772b8fad153dba9e8ce"},"etelkalight-webfont-635643de24bc05d241849d2d94360411.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26204,"digest":"635643de24bc05d241849d2d94360411"},"etelkalightbold-webfont-058000aa817bc9d3d3277193322e1571.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23707,"digest":"058000aa817bc9d3d3277193322e1571"},"etelkalightbold-webfont-2228057f2bc65595b1aa6bb978fdc024.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":62829,"digest":"2228057f2bc65595b1aa6bb978fdc024"},"etelkalightbold-webfont-a4d498eb3e03127324d20d39402b737c.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":51172,"digest":"a4d498eb3e03127324d20d39402b737c"},"etelkalightbold-webfont-ca5e2f470b251e7706b3fd222f6c452b.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26956,"digest":"ca5e2f470b251e7706b3fd222f6c452b"},"etelkalightitalic-webfont-0331b1a437f2be83bd1def92da31a621.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":26426,"digest":"0331b1a437f2be83bd1def92da31a621"},"etelkalightitalic-webfont-c86d64373f2e5820cb9c7579744d862b.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":69857,"digest":"c86d64373f2e5820cb9c7579744d862b"},"etelkalightitalic-webfont-eeab2ccc14859e347751e00b94c7468d.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":57040,"digest":"eeab2ccc14859e347751e00b94c7468d"},"etelkalightitalic-webfont-11ecd04590d9c57d06af4fd7f1f200a1.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":29884,"digest":"11ecd04590d9c57d06af4fd7f1f200a1"},"infotexb-webfont-8d885bee87d1477c6db0b59dd52fe896.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23124,"digest":"8d885bee87d1477c6db0b59dd52fe896"},"infotexb-webfont-0c710174eb8081bb570dcfc25caafa10.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":90188,"digest":"0c710174eb8081bb570dcfc25caafa10"},"infotexb-webfont-e7609a76f035df9ef1161dea0cafc89c.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":47396,"digest":"e7609a76f035df9ef1161dea0cafc89c"},"infotexb-webfont-71f78522d2a2c5a623ae6793fc18368e.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26228,"digest":"71f78522d2a2c5a623ae6793fc18368e"},"infotexm-webfont-b01aba1c16b6c69c24fd81580c4b252f.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-03-30T11:10:52+03:00","size":23273,"digest":"b01aba1c16b6c69c24fd81580c4b252f"},"infotexm-webfont-78ba702105f983e7c3ffe8c71e5e2b73.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-03-30T11:10:52+03:00","size":90423,"digest":"78ba702105f983e7c3ffe8c71e5e2b73"},"infotexm-webfont-5869797caccf6ab4d73938faf6b8588e.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-03-30T11:10:52+03:00","size":47484,"digest":"5869797caccf6ab4d73938faf6b8588e"},"infotexm-webfont-3ce446804ee12a1aa4f0d3c67a2ec305.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-03-30T11:10:52+03:00","size":26492,"digest":"3ce446804ee12a1aa4f0d3c67a2ec305"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-f91ca0f37189f2d27c249be3a9b5fe8e.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-05-12T11:03:08+03:00","size":180,"digest":"f91ca0f37189f2d27c249be3a9b5fe8e"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-bb0051ba9b6d87ef3f9425d05cb2f7f8.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-05-12T11:03:08+03:00","size":178,"digest":"bb0051ba9b6d87ef3f9425d05cb2f7f8"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-0fe7774bbb53c9db24dcf4dc4514db77.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":120,"digest":"0fe7774bbb53c9db24dcf4dc4514db77"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-e50e57d636a734253c3c0b4cb4cef861.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":105,"digest":"e50e57d636a734253c3c0b4cb4cef861"},"jquery-ui/ui-bg_glass_75_dadada_1x400-3f7ec278f71651df1dda0e20ac460483.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":111,"digest":"3f7ec278f71651df1dda0e20ac460483"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-6522c988bbf45e6b805b6ed4adf70079.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":110,"digest":"6522c988bbf45e6b805b6ed4adf70079"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-addad4f60fb36fc37c7ed9ff916af31e.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-05-12T11:03:08+03:00","size":119,"digest":"addad4f60fb36fc37c7ed9ff916af31e"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-7984ba05f627254dfdbdde97f999f415.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-05-12T11:03:08+03:00","size":101,"digest":"7984ba05f627254dfdbdde97f999f415"},"jquery-ui/ui-icons_222222_256x240-6e4c17c299f104a87548b204269bb9e5.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"6e4c17c299f104a87548b204269bb9e5"},"jquery-ui/ui-icons_2e83ff_256x240-7cb6a4006575c000b8f91394a06b8391.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"7cb6a4006575c000b8f91394a06b8391"},"jquery-ui/ui-icons_454545_256x240-3440f505d562d5b095634dcb3dcf7a07.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"3440f505d562d5b095634dcb3dcf7a07"},"jquery-ui/ui-icons_888888_256x240-cb45397ab08fadc7e4f1314b5d84e26c.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"cb45397ab08fadc7e4f1314b5d84e26c"},"jquery-ui/ui-icons_cd0a0a_256x240-b4b9d1b4f2de973c609e28b87fbfbd4d.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-05-12T11:03:08+03:00","size":4369,"digest":"b4b9d1b4f2de973c609e28b87fbfbd4d"},"select2-spinner-a9ae0d27964eb30e49e3396bb2b4bd3d.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-12T11:05:57+03:00","size":1849,"digest":"a9ae0d27964eb30e49e3396bb2b4bd3d"},"select2-4a19e1b1ee05dc61304a3f9cf69ed866.png":{"logical_path":"select2.png","mtime":"2015-05-12T11:05:57+03:00","size":613,"digest":"4a19e1b1ee05dc61304a3f9cf69ed866"},"select2x2-3bb6e2999d204bf36746d95f840e6b51.png":{"logical_path":"select2x2.png","mtime":"2015-05-12T11:05:57+03:00","size":845,"digest":"3bb6e2999d204bf36746d95f840e6b51"},"bootstrap/glyphicons-halflings-regular-050f85c5fbaa79689431c2a1f211fe2a.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-05-12T12:15:59+03:00","size":20127,"digest":"050f85c5fbaa79689431c2a1f211fe2a"},"bootstrap/glyphicons-halflings-regular-3c8f142df5ab3046bbeb3c3310ae4fa9.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-05-12T12:15:59+03:00","size":108738,"digest":"3c8f142df5ab3046bbeb3c3310ae4fa9"},"bootstrap/glyphicons-halflings-regular-632d47971ce98f67252b59ec394cb688.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-05-12T12:15:59+03:00","size":45404,"digest":"632d47971ce98f67252b59ec394cb688"},"bootstrap/glyphicons-halflings-regular-e88ed3ff660b39de62652ed99f351552.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-05-12T12:15:59+03:00","size":23424,"digest":"e88ed3ff660b39de62652ed99f351552"},"bootstrap/glyphicons-halflings-regular-b5493d564382942c09f766d4c2b51f0a.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-05-12T12:15:59+03:00","size":18028,"digest":"b5493d564382942c09f766d4c2b51f0a"},"admin-manifest-4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-03T17:46:46+03:00","size":166887,"digest":"4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0","integrity":"sha256-TfVBgS/kw3iUdY6bk6JV3esJyuGiWO5i+MsHRklhJKA="},"admin-manifest-a1d98585d33f501b3f72a9964749e49845ce9827c3254f31abc689b1cc284877.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-03T23:30:45+03:00","size":323860,"digest":"a1d98585d33f501b3f72a9964749e49845ce9827c3254f31abc689b1cc284877","integrity":"sha256-odmFhdM/UBs/cqmWR0nkmEXOmCfDJU8xq8aJscwoSHc="},"registrar-manifest-bffa75923fdda878303aa17da806fcf43415a599a19bf0022cf3f9e9d6140a05.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-03T17:32:10+03:00","size":192110,"digest":"bffa75923fdda878303aa17da806fcf43415a599a19bf0022cf3f9e9d6140a05","integrity":"sha256-v/p1kj/dqHgwOqF9qAb89DQVpZmhm/ACLPP56dYUCgU="},"registrar-manifest-91e58ca08340b0a7792aaec3980fdb8595319d31ea237173494e505a5b3751c6.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-03T23:27:27+03:00","size":310445,"digest":"91e58ca08340b0a7792aaec3980fdb8595319d31ea237173494e505a5b3751c6","integrity":"sha256-keWMoINAsKd5Kq7DmA/bhZUxnTHqI3FzSU5QWls3UcY="},"registrant-manifest-5042d2816e8cc296ed38449bd684b7df1f827e9aebbade86995e44f0320de332.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-03T17:32:10+03:00","size":192295,"digest":"5042d2816e8cc296ed38449bd684b7df1f827e9aebbade86995e44f0320de332","integrity":"sha256-UELSgW6MwpbtOESb1oS33x+Cfprrut6GmV5E8DIN4zI="},"registrant-manifest-9fb37a048a37bc0d0dfa7530d548c0dd38c4ee2ad067fe962c06cc7e94d2ddac.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-03T23:27:27+03:00","size":310445,"digest":"9fb37a048a37bc0d0dfa7530d548c0dd38c4ee2ad067fe962c06cc7e94d2ddac","integrity":"sha256-n7N6BIo3vA0N+nUw1UjA3TjE7irQZ/6WLAbMfpTS3aw="},"shared/pdf-f6e83972424c39d3f7ebe55fb4679237496990148efb3bb9a2a10a2c070be1a7.css":{"logical_path":"shared/pdf.css","mtime":"2015-06-03T17:32:03+03:00","size":120172,"digest":"f6e83972424c39d3f7ebe55fb4679237496990148efb3bb9a2a10a2c070be1a7","integrity":"sha256-9ug5ckJMOdP36+VftGeSN0lpkBSO+zu5oqEKLAcL4ac="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2015-05-12T11:05:57+03:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-12T11:05:57+03:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2015-05-12T11:05:57+03:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"alpha.png","mtime":"2015-04-30T12:07:54+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg":{"logical_path":"bg.jpg","mtime":"2015-06-03T17:32:03+03:00","size":69058,"digest":"b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05","integrity":"sha256-uANqvS8PNuOrVNXVslsPusEdY+xhBtlZ3z+hgLN53gU="},"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png":{"logical_path":"danske.png","mtime":"2015-06-03T17:32:03+03:00","size":1130,"digest":"07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96","integrity":"sha256-B6Q5XMQGeF2hKUFOFYcv4dak9vbaAGbaZwG1bNty6pY="},"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"development.png","mtime":"2015-04-30T12:07:54+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png":{"logical_path":"eis-logo-et.png","mtime":"2015-06-03T17:32:03+03:00","size":1440,"digest":"86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307","integrity":"sha256-hqVJ0mbNpz4yJcXuuhRTLFnUmOH9mA7BKf3taNqLswc="},"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico":{"logical_path":"favicon.ico","mtime":"2015-06-03T17:32:03+03:00","size":1150,"digest":"309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49","integrity":"sha256-MJ4A4vePmisEKrwoBqik7Zz2u10/AMzAmFsTCL/YbEk="},"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif":{"logical_path":"id_card.gif","mtime":"2015-06-03T17:32:03+03:00","size":564,"digest":"ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e","integrity":"sha256-6lBqSbJcjeTmjnhtkPXsXe+2yOiVuQ8vEpgV9eVQ/o4="},"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png":{"logical_path":"lhv.png","mtime":"2015-06-03T17:32:03+03:00","size":3417,"digest":"4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030","integrity":"sha256-TQnTEmoF3zkrc8VPqbHrYFeYwum9Nhz0RQD3MDiDIDA="},"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif":{"logical_path":"mid.gif","mtime":"2015-06-03T17:32:03+03:00","size":1566,"digest":"275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239","integrity":"sha256-J1VD7Oo3fevhrIkkcPOupPfn8PkIn8D76k3kEHQuUjk="},"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png":{"logical_path":"nordea.png","mtime":"2015-06-03T17:32:03+03:00","size":1181,"digest":"75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b","integrity":"sha256-dck4x0NuDIMW8Fa+jfis0Oixbgl5Dnj3jaltn4Yz7zs="},"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-06-03T17:32:03+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-06-03T17:32:03+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-06-03T17:32:03+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-06-03T17:32:03+03:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png":{"logical_path":"seb.png","mtime":"2015-06-03T17:32:03+03:00","size":2439,"digest":"9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e","integrity":"sha256-nJ2UMBTMTucGJEiTzYosSop8yXv73vambiLHLzPV8l4="},"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"staging.png","mtime":"2015-04-30T12:07:54+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png":{"logical_path":"swed.png","mtime":"2015-06-03T17:32:03+03:00","size":1521,"digest":"2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb","integrity":"sha256-LPRXKQYs9fpjQke6NyxXnJfzguXMQ/oREhkHfnRz/bs="},"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"test.png","mtime":"2015-06-03T17:32:03+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js":{"logical_path":"admin/application.js","mtime":"2015-06-03T23:30:45+03:00","size":287,"digest":"2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542","integrity":"sha256-LkqvyU286NQ9e6xOtVIaFKcuO77s47Q2NJTXD80nRUI="},"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-03T23:27:07+03:00","size":804,"digest":"978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9","integrity":"sha256-l4shqZrjyqu4qeMB3MqguT+GzHialZUVjJjuUTk7jLk="},"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-06-03T17:32:03+03:00","size":23109,"digest":"baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0","integrity":"sha256-uvfjWrL2S/HG+kR205NMdCIGKZVzj9nlcVsC9VAC18A="},"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-06-03T17:32:03+03:00","size":64768,"digest":"2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24","integrity":"sha256-K1dfbkaW10lXryenx7t5drfKMdDr6Owlu0w0lNXRbiQ="},"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-06-03T17:32:03+03:00","size":49748,"digest":"f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1","integrity":"sha256-9oottjRthk+Cw7PnJe5gsCF+keRuxH+WcQ9w+Za2GvE="},"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-06-03T17:32:03+03:00","size":26204,"digest":"1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043","integrity":"sha256-HtONusa4F790vUapjWEAWqJhXbesdD5ANzZNECEIQEM="},"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-06-03T17:32:03+03:00","size":23707,"digest":"1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39","integrity":"sha256-HZTKvm+1WwX3Rv4KpRp6UDaD16/baDYO0mv6wD4bPDk="},"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-06-03T17:32:03+03:00","size":62829,"digest":"bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555","integrity":"sha256-uwyOF7mbEPIRvjUxpR1q1IpcbkZwyPthYKMp+kdYxVU="},"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-06-03T17:32:03+03:00","size":51172,"digest":"0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429","integrity":"sha256-DwbR5/CZV44cwOmxh1rKKnEowMoNZA/VBOl7rgsChCk="},"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-06-03T17:32:03+03:00","size":26956,"digest":"d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805","integrity":"sha256-1gjANrPj8EyoehxJT42eliCnKbJ2C16x3O5SxLyOiAU="},"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-06-03T17:32:03+03:00","size":26426,"digest":"ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654","integrity":"sha256-zlzf/mxYmm3GvSxILHGEhv9ftBarAXQHUNsyUXnlhlQ="},"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-06-03T17:32:03+03:00","size":69857,"digest":"dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517","integrity":"sha256-3VNTwq9Opj4dDpnsXx+FFizuDE3Qo4QCYKJgbu/D5Rc="},"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-06-03T17:32:03+03:00","size":57040,"digest":"54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a","integrity":"sha256-VOuRrQ4LY59QvgK3wlg2yZrZiRhfXSokDWDqFKG3OEo="},"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-06-03T17:32:03+03:00","size":29884,"digest":"d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3","integrity":"sha256-0fuWIdQO9FEEB4pKW5jOTLoAhyz4rFbimc8Tl8FGysM="},"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-06-03T17:32:03+03:00","size":23124,"digest":"1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001","integrity":"sha256-GVHkPh2auZsNSZirukqrNPPmizN76QgA21F+So0n0AE="},"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-06-03T17:32:03+03:00","size":90188,"digest":"0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf","integrity":"sha256-Ddpy400NDO12k7Ve0IrMYPsakDav13NuQyrD8i8ub98="},"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-06-03T17:32:03+03:00","size":47396,"digest":"c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd","integrity":"sha256-wHN9Hi7f9QZF4gG/mfaPIxNQLuK96y5WQ17iRyG69c0="},"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-06-03T17:32:03+03:00","size":26228,"digest":"8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc","integrity":"sha256-jaMubbI8OTkMVd1eqJSXFHV/3bpRbF22XnKGdQRJP7w="},"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-06-03T17:32:03+03:00","size":23273,"digest":"74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26","integrity":"sha256-dN+Z+utm2LApZriIS4YK8Dw1ntQdNI3bgT28w8Rg6yY="},"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-06-03T17:32:03+03:00","size":90423,"digest":"0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557","integrity":"sha256-C1LvEGILjLconcgJqsZ4JtUDHmqwQBlP23Nl3IPpVVc="},"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-06-03T17:32:03+03:00","size":47484,"digest":"1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b","integrity":"sha256-HSRNJ6TsTBpfmMgpZvqibnhVxCkscwQpR3ADttq1wIs="},"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-06-03T17:32:03+03:00","size":26492,"digest":"872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0","integrity":"sha256-hytatOC33mZVpS8TejyZ8eeUH6kf8hpWVQ8gOYNO6dA="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-06-03T16:55:27+03:00","size":180,"digest":"9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab","integrity":"sha256-moSSpYC/hdPpiuiGH71FVn5aH4Pur8+VdNoDmdX2Aqs="},"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-06-03T16:55:27+03:00","size":178,"digest":"39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5","integrity":"sha256-Oat8zZ9Ogledp4qSQSZd8ojY62XbvXz0iu0tASmIffU="},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":120,"digest":"691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c","integrity":"sha256-aRWX6KQKiR6pTTWJl27Pwz5hRcSUIkQ7AKwrWgAilkw="},"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":105,"digest":"f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2","integrity":"sha256-8ObNkbg31cVkTQJuX/7M2QeVMxfNXA9omQFzOv2iYLI="},"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":111,"digest":"c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4","integrity":"sha256-wQj1y/LdnsB6JlMGld3ZXhZkWXzmwFauRMFizC4ozsQ="},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":110,"digest":"ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550","integrity":"sha256-3fXdTg7ysYXouwr3tukOvnSoQ4TLRwBljnbnVMi/5VA="},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":119,"digest":"f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c","integrity":"sha256-9vHBvt8aDzfP74HRL18BKGnR7nyYR3WlaYJ6F4TTT1w="},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-06-03T16:55:27+03:00","size":101,"digest":"54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a","integrity":"sha256-VCcGVt8HnE2lGCYpoID8YztvhLh5hesBbSWlYOLDjUo="},"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc","integrity":"sha256-V62w1l9OkdrP7pddlXRCK+50hsihgtYBM3KMZy8s27w="},"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9","integrity":"sha256-IPjGZnr8SKpDPunrbYoFhL29a0pKkJH/Hms62zHmO9k="},"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f","integrity":"sha256-B0YOhDw+WaqtuzQjHmmehWopgHU8eke2ZEfaXZ+T+38="},"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b","integrity":"sha256-6i4pYl3jRjRl6TsAKwZfWDPgW5f3oFKxwUHnVNYuGos="},"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="},"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-05-12T12:15:59+03:00","size":20127,"digest":"13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407","integrity":"sha256-E2NNqH2eI/jD7ZEIzhck0YOjmtBy5z4bPYy/ZG0tBAc="},"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-05-12T12:15:59+03:00","size":108738,"digest":"42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5","integrity":"sha256-QvYGWdJlwaPDD5+kKry7Vr1KU69Ng9MW1t16NpA8Q+U="},"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-05-12T12:15:59+03:00","size":45404,"digest":"e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456","integrity":"sha256-45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY="},"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-05-12T12:15:59+03:00","size":23424,"digest":"a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742","integrity":"sha256-omOU9+3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I="},"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-05-12T12:15:59+03:00","size":18028,"digest":"fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c","integrity":"sha256-/hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw="},"admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-04T00:03:26+03:00","size":323893,"digest":"5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3","integrity":"sha256-X2EvWcnv/MoL5TlsTwBlTeI20rsbFrvfkptH5lBDgfM="},"registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-04T00:03:26+03:00","size":314906,"digest":"413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3","integrity":"sha256-QT/aBXgysl3unUX18HsprDafyF9R7NnnvCze+lKXtPM="},"registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-04T00:03:26+03:00","size":314906,"digest":"f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48","integrity":"sha256-+enXld5PfavjhzZf0ynByyTakjvTV5iMEgzFcQIwzEg="}},"assets":{"alpha.png":"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","development.png":"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","staging.png":"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","application.js":"application-805c69cec6ea75185028b7e45efee5fd.js","application.css":"application-993e676726143d5ead2f8840bc8894a7.css","login.css":"login-3546bfbfa6594a3ce191938a5e6d3066.css","bootstrap/glyphicons-halflings-regular.eot":"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot","bootstrap/glyphicons-halflings-regular.svg":"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg","bootstrap/glyphicons-halflings-regular.ttf":"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf","bootstrap/glyphicons-halflings-regular.woff":"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff","bg.jpg":"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg","danske.png":"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png","eis-logo-et.png":"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png","favicon.ico":"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico","id_card.gif":"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif","lhv.png":"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png","mid.gif":"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif","nordea.png":"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png","registrar/bg-alpha.png":"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","registrar/bg-development.png":"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","registrar/bg-staging.png":"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","registrar/favicon.ico":"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico","seb.png":"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png","swed.png":"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png","test.png":"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","admin-manifest.js":"admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js","admin/application.js":"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js","registrant-manifest.js":"registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js","registrar-manifest.js":"registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js","registrar/application.js":"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js","admin-manifest.css":"admin-manifest-4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0.css","registrant-manifest.css":"registrant-manifest-5042d2816e8cc296ed38449bd684b7df1f827e9aebbade86995e44f0320de332.css","registrar-manifest.css":"registrar-manifest-bffa75923fdda878303aa17da806fcf43415a599a19bf0022cf3f9e9d6140a05.css","shared/pdf.css":"shared/pdf-f6e83972424c39d3f7ebe55fb4679237496990148efb3bb9a2a10a2c070be1a7.css","etelkalight-webfont.eot":"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot","etelkalight-webfont.svg":"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg","etelkalight-webfont.ttf":"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf","etelkalight-webfont.woff":"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff","etelkalightbold-webfont.eot":"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot","etelkalightbold-webfont.svg":"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg","etelkalightbold-webfont.ttf":"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf","etelkalightbold-webfont.woff":"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff","etelkalightitalic-webfont.eot":"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot","etelkalightitalic-webfont.svg":"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg","etelkalightitalic-webfont.ttf":"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf","etelkalightitalic-webfont.woff":"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff","infotexb-webfont.eot":"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot","infotexb-webfont.svg":"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg","infotexb-webfont.ttf":"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf","infotexb-webfont.woff":"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff","infotexm-webfont.eot":"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot","infotexm-webfont.svg":"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg","infotexm-webfont.ttf":"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf","infotexm-webfont.woff":"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","bootstrap/glyphicons-halflings-regular.woff2":"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2"}} \ No newline at end of file diff --git a/public/assets/admin-manifest-4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0.css b/public/assets/admin-manifest-4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0.css new file mode 100644 index 000000000..346fc2af2 --- /dev/null +++ b/public/assets/admin-manifest-4df541812fe4c37894758e9b93a255ddeb09cae1a258ee62f8cb0746496124a0.css @@ -0,0 +1,30 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url("/assets/bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot");src:url("/assets/bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot?#iefix") format("embedded-opentype"),url("/assets/bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2") format("woff2"),url("/assets/bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff") format("woff"),url("/assets/bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf") format("truetype"),url("/assets/bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"EtelkaLightProRegular", Arial, Helvetica, sans-serif;font-size:14px;line-height:1.42857143;color:#333333;background-color:#F8F8F8}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#F8F8F8;border:1px solid #ddd;border-radius:2px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:26px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase,.initialism{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo, Monaco, Consolas, "Courier New", monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:2px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:2px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:860px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#F8F8F8}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,.input-group-sm input[type="date"],input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,.input-group-sm input[type="time"],input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,.input-group-sm input[type="datetime-local"],input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn,.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,.input-group-lg input[type="date"],input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,.input-group-lg input[type="time"],input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,.input-group-lg input[type="datetime-local"],input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn,.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;min-height:32px}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;min-height:38px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.field_with_errors .help-block,.has-error .control-label,.field_with_errors .control-label,.has-error .radio,.field_with_errors .radio,.has-error .checkbox,.field_with_errors .checkbox,.has-error .radio-inline,.field_with_errors .radio-inline,.has-error .checkbox-inline,.field_with_errors .checkbox-inline,.has-error.radio label,.radio.field_with_errors label,.has-error.checkbox label,.checkbox.field_with_errors label,.has-error.radio-inline label,.radio-inline.field_with_errors label,.has-error.checkbox-inline label,.checkbox-inline.field_with_errors label{color:#a94442}.has-error .form-control,.field_with_errors .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus,.field_with_errors .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon,.field_with_errors .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback,.field_with_errors .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:2px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #ccc;border-radius:2px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#777777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:2px 2px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#F8F8F8;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:2px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:2px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#F8F8F8}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:2px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:2px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:2px;border-top-left-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#F69240;border-color:#f58020}.navbar-default .navbar-brand{color:#fff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#e6e6e6;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#fff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#333;background-color:#f58020}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#f58020}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#f58020;color:#333}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#333;background-color:#f58020}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#fff}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#fff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:2px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:2px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:2px;border-top-left-radius:2px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:2px;border-top-right-radius:2px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eeeeee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#F8F8F8;border:1px solid #ddd;border-radius:2px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:2px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#777777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:2px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:1px;border-top-left-radius:1px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:1px;border-top-left-radius:1px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:1px;border-top-left-radius:1px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:1px;border-top-right-radius:1px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:1px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:1px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:1px;border-bottom-right-radius:1px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:1px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:1px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:2px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"EtelkaLightProRegular", Arial, Helvetica, sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:2px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"EtelkaLightProRegular", Arial, Helvetica, sans-serif;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs{display:none !important}.visible-sm{display:none !important}.visible-md{display:none !important}.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.center-block{float:none !important}.text-left-not-xs,.text-left-not-sm,.text-left-not-md,.text-left-not-lg{text-align:left}.text-center-not-xs,.text-center-not-sm,.text-center-not-md,.text-center-not-lg{text-align:center}.text-right-not-xs,.text-right-not-sm,.text-right-not-md,.text-right-not-lg{text-align:right}.text-justify-not-xs,.text-justify-not-sm,.text-justify-not-md,.text-justify-not-lg{text-align:justify}@media (max-width: 767px){.text-left-not-xs,.text-center-not-xs,.text-right-not-xs,.text-justify-not-xs{text-align:inherit}.text-left-xs{text-align:left}.text-center-xs{text-align:center}.text-right-xs{text-align:right}.text-justify-xs{text-align:justify}}@media (min-width: 768px) and (max-width: 991px){.text-left-not-sm,.text-center-not-sm,.text-right-not-sm,.text-justify-not-sm{text-align:inherit}.text-left-sm{text-align:left}.text-center-sm{text-align:center}.text-right-sm{text-align:right}.text-justify-sm{text-align:justify}}@media (min-width: 992px) and (max-width: 1199px){.text-left-not-md,.text-center-not-md,.text-right-not-md,.text-justify-not-md{text-align:inherit}.text-left-md{text-align:left}.text-center-md{text-align:center}.text-right-md{text-align:right}.text-justify-md{text-align:justify}}@media (min-width: 1200px){.text-left-not-lg,.text-center-not-lg,.text-right-not-lg,.text-justify-not-lg{text-align:inherit}.text-left-lg{text-align:left}.text-center-lg{text-align:center}.text-right-lg{text-align:right}.text-justify-lg{text-align:justify}}.required:after{content:"*";margin:0 0 0 1px}.not-required:after{content:""}/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(/assets/jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(/assets/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(/assets/jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(/assets/jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(/assets/jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(/assets/jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png)}.ui-widget-header .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png)}.ui-state-default .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png)}.ui-state-active .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png)}.ui-state-highlight .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(/assets/jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png) 50% 50% repeat-x;opacity:0.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png) 50% 50% repeat-x;opacity:0.3;filter:Alpha(Opacity=30);border-radius:8px}/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}/*! + * jQuery UI Datepicker 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/datepicker/#theming + */.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}@font-face{font-family:"EtelkaLightProRegular";src:url(/assets/etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot);src:url(/assets/etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot?#iefix) format("embedded-opentype"),url(/assets/etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff) format("woff"),url(/assets/etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf) format("truetype"),url(/assets/etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg#EtelkaLightProRegular) format("svg");font-weight:normal;font-style:normal}@font-face{font-family:"EtelkaLightProBold";src:url(/assets/etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot);src:url(/assets/etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot?#iefix) format("embedded-opentype"),url(/assets/etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff) format("woff"),url(/assets/etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf) format("truetype"),url(/assets/etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg#EtelkaLightProBold) format("svg");font-weight:normal;font-style:normal}@font-face{font-family:"EtelkaLightProItalic";src:url(/assets/etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot);src:url(/assets/etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot?#iefix) format("embedded-opentype"),url(/assets/etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff) format("woff"),url(/assets/etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf) format("truetype"),url(/assets/etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg#EtelkaLightProItalic) format("svg");font-weight:normal;font-style:normal}@font-face{font-family:"InfoTextBold";src:url(/assets/infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot);src:url(/assets/infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot?#iefix) format("embedded-opentype"),url(/assets/infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff) format("woff"),url(/assets/infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf) format("truetype"),url(/assets/infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg#InfoTextBold) format("svg");font-weight:normal;font-style:normal}@font-face{font-family:"InfoTextMedium";src:url(/assets/infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot);src:url(/assets/infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot?#iefix) format("embedded-opentype"),url(/assets/infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff) format("woff"),url(/assets/infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf) format("truetype"),url(/assets/infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg#InfoTextMedium) format("svg");font-weight:normal;font-style:normal}@font-face{font-family:"InfoTextRegular";src:url(/fonts/infotexn-webfont.eot);src:url(/fonts/infotexn-webfont.eot?#iefix) format("embedded-opentype"),url(/fonts/infotexn-webfont.woff) format("woff"),url(/fonts/infotexn-webfont.ttf) format("truetype"),url(/fonts/infotexn-webfont.svg#InfoTextRegular) format("svg");font-weight:normal;font-style:normal}body>.container{min-height:800px}.error-tab>a{color:#a94442 !important}.edit-highlight{background-color:#E7E7E7}.navbar-brand{line-height:12px;padding-top:20px;padding-bottom:5px}.navbar-brand small{display:block;font-size:10px}.footer{color:#777;padding-top:15px;font-size:10px}.nowrap{white-space:nowrap}.form-signin{max-width:330px;padding:15px;margin:0 auto}.form-signin input{margin-bottom:10px}.form-signin .form-control{position:relative;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;font-size:16px}.no-border{border:0px !important}.errors{color:#A94442}.typeahead{margin-left:5px}@media (min-width: 768px) and (max-width: 991px){.control-label{text-align:left !important}}.text-grey{color:grey}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:100;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #29d, 0 0 5px #29d;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px, -4px);-ms-transform:rotate(3deg) translate(0px, -4px);transform:rotate(3deg) translate(0px, -4px)}#nprogress .spinner{display:block;position:fixed;z-index:100;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}#nprogress .bar,#nprogress .spinner{z-index:999999}.twitter-typeahead{width:100%;position:relative}.tt-dropdown-menu{width:100%;min-width:160px;margin-top:2px;padding:5px 0;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.tt-suggestion{display:block;padding:3px 20px}.twitter-typeahead .tt-suggestion.tt-cursor{color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}.tt-suggestion.tt-cursor a{color:#fff}.tt-suggestion p{margin:0}.selectize-control.plugin-drag_drop.multi>.selectize-input>div.ui-sortable-placeholder{visibility:visible !important;background:#f2f2f2 !important;background:rgba(0,0,0,0.06) !important;border:0 none !important;-webkit-box-shadow:inset 0 0 12px 4px #ffffff;box-shadow:inset 0 0 12px 4px #ffffff}.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after{content:'!';visibility:hidden}.selectize-control.plugin-drag_drop .ui-sortable-helper{-webkit-box-shadow:0 2px 5px rgba(0,0,0,0.2);box-shadow:0 2px 5px rgba(0,0,0,0.2)}.selectize-dropdown-header{position:relative;padding:5px 8px;border-bottom:1px solid #d0d0d0;background:#f8f8f8;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.selectize-dropdown-header-close{position:absolute;right:8px;top:50%;color:#303030;opacity:0.4;margin-top:-12px;line-height:20px;font-size:20px !important}.selectize-dropdown-header-close:hover{color:#000000}.selectize-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.selectize-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.selectize-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.selectize-control.plugin-remove_button [data-value]{position:relative;padding-right:24px !important}.selectize-control.plugin-remove_button [data-value] .remove{z-index:1;position:absolute;top:0;right:0;bottom:0;width:17px;text-align:center;font-weight:bold;font-size:12px;color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:2px 0 0 0;border-left:1px solid #d0d0d0;-webkit-border-radius:0 2px 2px 0;-moz-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.selectize-control.plugin-remove_button [data-value] .remove:hover{background:rgba(0,0,0,0.05)}.selectize-control.plugin-remove_button [data-value].active .remove{border-left-color:#cacaca}.selectize-control.plugin-remove_button .disabled [data-value] .remove:hover{background:none}.selectize-control.plugin-remove_button .disabled [data-value] .remove{border-left-color:#ffffff}.selectize-control{position:relative}.selectize-dropdown,.selectize-input,.selectize-input input{color:#303030;font-family:inherit;font-size:13px;line-height:18px;-webkit-font-smoothing:inherit}.selectize-input,.selectize-control.single .selectize-input.input-active{background:#ffffff;cursor:text;display:inline-block}.selectize-input{border:1px solid #d0d0d0;padding:8px 8px;display:inline-block;width:100%;overflow:hidden;position:relative;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.1);box-shadow:inset 0 1px 1px rgba(0,0,0,0.1);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.selectize-control.multi .selectize-input.has-items{padding:6px 8px 3px}.selectize-input.full{background-color:#ffffff}.selectize-input.disabled,.selectize-input.disabled *{cursor:default !important}.selectize-input.focus{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.15)}.selectize-input.dropdown-active{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.selectize-input>*{vertical-align:baseline;display:-moz-inline-stack;display:inline-block;zoom:1;*display:inline}.selectize-control.multi .selectize-input>div{cursor:pointer;margin:0 3px 3px 0;padding:2px 6px;background:#f2f2f2;color:#303030;border:0 solid #d0d0d0}.selectize-control.multi .selectize-input>div.active{background:#e8e8e8;color:#303030;border:0 solid #cacaca}.selectize-control.multi .selectize-input.disabled>div,.selectize-control.multi .selectize-input.disabled>div.active{color:#7d7d7d;background:#ffffff;border:0 solid #ffffff}.selectize-input>input{display:inline-block !important;padding:0 !important;min-height:0 !important;max-height:none !important;max-width:100% !important;margin:0 2px 0 0 !important;text-indent:0 !important;border:0 none !important;background:none !important;line-height:inherit !important;-webkit-user-select:auto !important;-webkit-box-shadow:none !important;box-shadow:none !important}.selectize-input>input::-ms-clear{display:none}.selectize-input>input:focus{outline:none !important}.selectize-input::after{content:' ';display:block;clear:left}.selectize-input.dropdown-active::before{content:' ';display:block;position:absolute;background:#f0f0f0;height:1px;bottom:0;left:0;right:0}.selectize-dropdown{position:absolute;z-index:10;border:1px solid #d0d0d0;background:#ffffff;margin:-1px 0 0 0;border-top:0 none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.selectize-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.selectize-dropdown [data-selectable] .highlight{background:rgba(125,168,208,0.2);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.selectize-dropdown [data-selectable],.selectize-dropdown .optgroup-header{padding:5px 8px}.selectize-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.selectize-dropdown .optgroup-header{color:#303030;background:#ffffff;cursor:default}.selectize-dropdown .active{background-color:#f5fafd;color:#495c68}.selectize-dropdown .active.create{color:#495c68}.selectize-dropdown .create{color:rgba(48,48,48,0.5)}.selectize-dropdown-content{overflow-y:auto;overflow-x:hidden;max-height:200px}.selectize-control.single .selectize-input,.selectize-control.single .selectize-input input{cursor:pointer}.selectize-control.single .selectize-input.input-active,.selectize-control.single .selectize-input.input-active input{cursor:text}.selectize-control.single .selectize-input:after{content:' ';display:block;position:absolute;top:50%;right:15px;margin-top:-3px;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:#808080 transparent transparent transparent}.selectize-control.single .selectize-input.dropdown-active:after{margin-top:-4px;border-width:0 5px 5px 5px;border-color:transparent transparent #808080 transparent}.selectize-control.rtl.single .selectize-input:after{left:15px;right:auto}.selectize-control.rtl .selectize-input>input{margin:0 4px 0 -2px !important}.selectize-control .selectize-input.disabled{opacity:0.5;background-color:#fafafa}.selectize-control.plugin-drag_drop.multi>.selectize-input>div.ui-sortable-placeholder{visibility:visible !important;background:#f2f2f2 !important;background:rgba(0,0,0,0.06) !important;border:0 none !important;-webkit-box-shadow:inset 0 0 12px 4px #ffffff;box-shadow:inset 0 0 12px 4px #ffffff}.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after{content:'!';visibility:hidden}.selectize-control.plugin-drag_drop .ui-sortable-helper{-webkit-box-shadow:0 2px 5px rgba(0,0,0,0.2);box-shadow:0 2px 5px rgba(0,0,0,0.2)}.selectize-dropdown-header{position:relative;padding:3px 12px;border-bottom:1px solid #d0d0d0;background:#f8f8f8;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.selectize-dropdown-header-close{position:absolute;right:12px;top:50%;color:#333333;opacity:0.4;margin-top:-12px;line-height:20px;font-size:20px !important}.selectize-dropdown-header-close:hover{color:#000000}.selectize-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.selectize-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.selectize-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.selectize-control.plugin-remove_button [data-value]{position:relative;padding-right:24px !important}.selectize-control.plugin-remove_button [data-value] .remove{z-index:1;position:absolute;top:0;right:0;bottom:0;width:17px;text-align:center;font-weight:bold;font-size:12px;color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:1px 0 0 0;border-left:1px solid transparent;-webkit-border-radius:0 2px 2px 0;-moz-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.selectize-control.plugin-remove_button [data-value] .remove:hover{background:rgba(0,0,0,0.05)}.selectize-control.plugin-remove_button [data-value].active .remove{border-left-color:transparent}.selectize-control.plugin-remove_button .disabled [data-value] .remove:hover{background:none}.selectize-control.plugin-remove_button .disabled [data-value] .remove{border-left-color:rgba(77,77,77,0)}.selectize-control{position:relative}.selectize-dropdown,.selectize-input,.selectize-input input{color:#333333;font-family:inherit;font-size:inherit;line-height:20px;-webkit-font-smoothing:inherit}.selectize-input,.selectize-control.single .selectize-input.input-active{background:#ffffff;cursor:text;display:inline-block}.selectize-input{border:1px solid #cccccc;padding:6px 12px;display:inline-block;width:100%;overflow:hidden;position:relative;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;box-shadow:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.selectize-control.multi .selectize-input.has-items{padding:5px 12px 2px}.selectize-input.full{background-color:#ffffff}.selectize-input.disabled,.selectize-input.disabled *{cursor:default !important}.selectize-input.focus{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.15)}.selectize-input.dropdown-active{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.selectize-input>*{vertical-align:baseline;display:-moz-inline-stack;display:inline-block;zoom:1;*display:inline}.selectize-control.multi .selectize-input>div{cursor:pointer;margin:0 3px 3px 0;padding:1px 3px;background:#efefef;color:#333333;border:0 solid transparent}.selectize-control.multi .selectize-input>div.active{background:#428bca;color:#ffffff;border:0 solid transparent}.selectize-control.multi .selectize-input.disabled>div,.selectize-control.multi .selectize-input.disabled>div.active{color:#808080;background:#ffffff;border:0 solid rgba(77,77,77,0)}.selectize-input>input{display:inline-block !important;padding:0 !important;min-height:0 !important;max-height:none !important;max-width:100% !important;margin:0 !important;text-indent:0 !important;border:0 none !important;background:none !important;line-height:inherit !important;-webkit-user-select:auto !important;-webkit-box-shadow:none !important;box-shadow:none !important}.selectize-input>input::-ms-clear{display:none}.selectize-input>input:focus{outline:none !important}.selectize-input::after{content:' ';display:block;clear:left}.selectize-input.dropdown-active::before{content:' ';display:block;position:absolute;background:#ffffff;height:1px;bottom:0;left:0;right:0}.selectize-dropdown{position:absolute;z-index:10;border:1px solid #d0d0d0;background:#ffffff;margin:-1px 0 0 0;border-top:0 none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.selectize-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.selectize-dropdown [data-selectable] .highlight{background:rgba(255,237,40,0.4);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.selectize-dropdown [data-selectable],.selectize-dropdown .optgroup-header{padding:3px 12px}.selectize-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.selectize-dropdown .optgroup-header{color:#777777;background:#ffffff;cursor:default}.selectize-dropdown .active{background-color:#f5f5f5;color:#262626}.selectize-dropdown .active.create{color:#262626}.selectize-dropdown .create{color:rgba(51,51,51,0.5)}.selectize-dropdown-content{overflow-y:auto;overflow-x:hidden;max-height:200px}.selectize-control.single .selectize-input,.selectize-control.single .selectize-input input{cursor:pointer}.selectize-control.single .selectize-input.input-active,.selectize-control.single .selectize-input.input-active input{cursor:text}.selectize-control.single .selectize-input:after{content:' ';display:block;position:absolute;top:50%;right:17px;margin-top:-3px;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:#333333 transparent transparent transparent}.selectize-control.single .selectize-input.dropdown-active:after{margin-top:-4px;border-width:0 5px 5px 5px;border-color:transparent transparent #333333 transparent}.selectize-control.rtl.single .selectize-input:after{left:17px;right:auto}.selectize-control.rtl .selectize-input>input{margin:0 4px 0 -2px !important}.selectize-control .selectize-input.disabled{opacity:0.5;background-color:#ffffff}.selectize-dropdown,.selectize-dropdown.form-control{height:auto;padding:0;margin:2px 0 0 0;z-index:1000;background:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.selectize-dropdown .optgroup-header{font-size:12px;line-height:1.42857143}.selectize-dropdown .optgroup:first-child:before{display:none}.selectize-dropdown .optgroup:before{content:' ';display:block;height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5;margin-left:-12px;margin-right:-12px}.selectize-dropdown-content{padding:5px 0}.selectize-dropdown-header{padding:6px 12px}.selectize-input{min-height:34px}.selectize-input.dropdown-active{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.selectize-input.dropdown-active::before{display:none}.selectize-input.focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.has-error .selectize-input{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .selectize-input:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.selectize-control.multi .selectize-input.has-items{padding-left:9px;padding-right:9px}.selectize-control.multi .selectize-input>div{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.form-control.selectize-control{padding:0;height:auto;border:none;background:none;-webkit-box-shadow:none;box-shadow:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body>.container{background:#fff;padding:16px 30px 30px 30px;margin-top:0px;border-radius:3px;min-height:600px}h1{font-size:26px;margin-bottom:16px}a{color:#23527C;text-decoration:none}a:hover,a:active{color:#23527C;outline:0}h1,h2,h3,h4,h1 a,h2 a,h3 a,h4 a{color:#272f34;text-decoration:none;font-weight:normal;font-family:"EtelkaLightProBold"}body,button,input,select,textarea{font-family:"EtelkaLightProRegular", Arial, Helvetica, sans-serif;color:#5d6064;font-size:13px}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:normal;font-family:"EtelkaLightProBold"}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}pre,code,kbd,samp{font-family:monospace, serif;_font-family:"courier new", monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:75%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}.title-row{margin-bottom:22px}.app-nav{padding-top:7px}.general-tab{padding-top:30px;padding-right:20px;border-top:0px}.container.version{background:transparent;margin-top:-116px;min-height:0px;text-align:right;font-size:12px;color:gray}.container.subnav{background:transparent;min-height:0;padding:0 46px 0 0;margin-bottom:0}.container.subnav ul.nav li a{background:#E7E7E7;height:33px;line-height:12px;color:gray}.container.subnav ul.nav li a:hover{color:#333}.container.subnav ul.nav li.active a{background:#F8F8F8;font-weight:bold;color:#333}.subactions{min-height:600px}.subactions h4{margin-bottom:20px;margin-top:10px}.sidebar{min-height:400px}.content{margin-right:240px;margin-left:0}h4{margin:0}.top-actions{margin-top:12px;margin-bottom:16px;float:right}.domify td{vertical-align:middle !important}body.login{padding-top:40px;padding-bottom:40px}body.login .checkbox{margin-bottom:10px}body.login .form-signin{max-width:330px;padding:15px;margin:0 auto}body.login .form-signin input[type="text"]{margin-bottom:8px}body.login .form-signin input[type="password"]{margin-bottom:10px}body.login .form-signin .btn-lg{margin-top:28px}body.login .form-signin .checkbox{font-weight:normal}body.login .form-signin .form-control{position:relative;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;font-size:16px}body.login .form-signin .form-control:focus{z-index:2}.error-tab>a{color:#a94442 !important}.edit-highlight{background-color:#E7E7E7}.navbar-brand{line-height:12px;padding-top:20px;padding-bottom:5px}.navbar-brand small{display:block;font-size:10px}.navbar{margin-bottom:0}.footer{color:#777;padding-top:15px;font-size:10px}.nowrap{white-space:nowrap}.form-signin{max-width:330px;padding:15px;margin:0 auto}.form-signin input{margin-bottom:10px}.form-signin .form-control{position:relative;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;font-size:16px}.form-signin{max-width:330px;padding:15px;margin:0 auto}.form-signin input{margin-bottom:10px}@media (min-width: 860px){.control-label{text-align:right;margin-bottom:0;padding-top:7px}} diff --git a/public/assets/admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js b/public/assets/admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js new file mode 100644 index 000000000..b2e3af1cf --- /dev/null +++ b/public/assets/admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js @@ -0,0 +1,201 @@ +/*! + * jQuery JavaScript Library v1.11.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-17T15:27Z + */ +!function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function n(t){var e=t.length,n=re.type(t);return"function"===n||re.isWindow(t)?!1:1===t.nodeType&&e?!0:"array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t}function i(t,e,n){if(re.isFunction(e))return re.grep(t,function(t,i){return!!e.call(t,i,t)!==n});if(e.nodeType)return re.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(he.test(e))return re.filter(e,t,n);e=re.filter(e,t)}return re.grep(t,function(t){return re.inArray(t,e)>=0!==n})}function r(t,e){do t=t[e];while(t&&1!==t.nodeType);return t}function o(t){var e=we[t]={};return re.each(t.match(be)||[],function(t,n){e[n]=!0}),e}function a(){fe.addEventListener?(fe.removeEventListener("DOMContentLoaded",s,!1),t.removeEventListener("load",s,!1)):(fe.detachEvent("onreadystatechange",s),t.detachEvent("onload",s))}function s(){(fe.addEventListener||"load"===event.type||"complete"===fe.readyState)&&(a(),re.ready())}function l(t,e,n){if(void 0===n&&1===t.nodeType){var i="data-"+e.replace(De,"-$1").toLowerCase();if(n=t.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:_e.test(n)?re.parseJSON(n):n}catch(r){}re.data(t,e,n)}else n=void 0}return n}function u(t){var e;for(e in t)if(("data"!==e||!re.isEmptyObject(t[e]))&&"toJSON"!==e)return!1;return!0}function c(t,e,n,i){if(re.acceptData(t)){var r,o,a=re.expando,s=t.nodeType,l=s?re.cache:t,u=s?t[a]:t[a]&&a;if(u&&l[u]&&(i||l[u].data)||void 0!==n||"string"!=typeof e)return u||(u=s?t[a]=V.pop()||re.guid++:a),l[u]||(l[u]=s?{}:{toJSON:re.noop}),("object"==typeof e||"function"==typeof e)&&(i?l[u]=re.extend(l[u],e):l[u].data=re.extend(l[u].data,e)),o=l[u],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[re.camelCase(e)]=n),"string"==typeof e?(r=o[e],null==r&&(r=o[re.camelCase(e)])):r=o,r}}function d(t,e,n){if(re.acceptData(t)){var i,r,o=t.nodeType,a=o?re.cache:t,s=o?t[re.expando]:re.expando;if(a[s]){if(e&&(i=n?a[s]:a[s].data)){re.isArray(e)?e=e.concat(re.map(e,re.camelCase)):e in i?e=[e]:(e=re.camelCase(e),e=e in i?[e]:e.split(" ")),r=e.length;for(;r--;)delete i[e[r]];if(n?!u(i):!re.isEmptyObject(i))return}(n||(delete a[s].data,u(a[s])))&&(o?re.cleanData([t],!0):ne.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}function h(){return!0}function p(){return!1}function f(){try{return fe.activeElement}catch(t){}}function g(t){var e=Le.split("|"),n=t.createDocumentFragment();if(n.createElement)for(;e.length;)n.createElement(e.pop());return n}function m(t,e){var n,i,r=0,o=typeof t.getElementsByTagName!==Ce?t.getElementsByTagName(e||"*"):typeof t.querySelectorAll!==Ce?t.querySelectorAll(e||"*"):void 0;if(!o)for(o=[],n=t.childNodes||t;null!=(i=n[r]);r++)!e||re.nodeName(i,e)?o.push(i):re.merge(o,m(i,e));return void 0===e||e&&re.nodeName(t,e)?re.merge([t],o):o}function v(t){Ee.test(t.type)&&(t.defaultChecked=t.checked)}function y(t,e){return re.nodeName(t,"table")&&re.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function b(t){return t.type=(null!==re.find.attr(t,"type"))+"/"+t.type,t}function w(t){var e=Ye.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function x(t,e){for(var n,i=0;null!=(n=t[i]);i++)re._data(n,"globalEval",!e||re._data(e[i],"globalEval"))}function k(t,e){if(1===e.nodeType&&re.hasData(t)){var n,i,r,o=re._data(t),a=re._data(e,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)re.event.add(e,n,s[n][i])}a.data&&(a.data=re.extend({},a.data))}}function C(t,e){var n,i,r;if(1===e.nodeType){if(n=e.nodeName.toLowerCase(),!ne.noCloneEvent&&e[re.expando]){r=re._data(e);for(i in r.events)re.removeEvent(e,i,r.handle);e.removeAttribute(re.expando)}"script"===n&&e.text!==t.text?(b(e).text=t.text,w(e)):"object"===n?(e.parentNode&&(e.outerHTML=t.outerHTML),ne.html5Clone&&t.innerHTML&&!re.trim(e.innerHTML)&&(e.innerHTML=t.innerHTML)):"input"===n&&Ee.test(t.type)?(e.defaultChecked=e.checked=t.checked,e.value!==t.value&&(e.value=t.value)):"option"===n?e.defaultSelected=e.selected=t.defaultSelected:("input"===n||"textarea"===n)&&(e.defaultValue=t.defaultValue)}}function _(e,n){var i,r=re(n.createElement(e)).appendTo(n.body),o=t.getDefaultComputedStyle&&(i=t.getDefaultComputedStyle(r[0]))?i.display:re.css(r[0],"display");return r.detach(),o}function D(t){var e=fe,n=Je[t];return n||(n=_(t,e),"none"!==n&&n||(Ge=(Ge||re("