Ccsecure.pm
Security routines for Cclite
This package deals with session and security management. Currently sessions are via tokens. Tokens are hashes of IP address and validated password. They shouldn't work from a new address by being transported.
Action completes OK or it's a violation. If it's a violation, it's logged.
Note that nearly every other routine within Cclite can consume a token. This is usually the last input parameter for any given subroutine.
This isn't used at present but the idea is many watertight doors rather than a perimeter and a leaky interior.
I expect to put public key processing for GPG email and similar here too.
This can now use the pure Perl SHA package. The idea is to enable a full installation where a user may not be able to use CPAN. However Digest::SHA2 will be much faster.
07/2011
Code is gradually being added for salted passwords and OAuth. This is turned off at the moment, but will be 'on' within a couple of releases
Hugh Barnard
(c) Hugh Barnard 2005 GPL Licenced
# package Ccsecure; use strict; use vars qw(@ISA @EXPORT); use Exporter; use Ccu; use Cclitedb; use Cccookie; use Digest::SHA qw(sha1 sha512); # these should be core modules now... use MIME::Base64 qw(encode_base64url decode_base64url); # use Net::OAuth; # for Oauth in a while... use Ccconfiguration; # new style configuration, read hash type... ###use GnuPG qw( :algo ); my $VERSION = 1.00; @ISA = qw(Exporter); @EXPORT = qw(login logout hash_password get_server_details install_grumble is_admin compare_password random_password calculate_token calculate_api_key compare_api_key do_oauth gatekeeper valid_token parse_remote_user log_violation text_to_hash encode_base64 decode_base64 ); # this will choose the hashing module type, hash processing # depends on this within _get_digest our %messages = readmessages(); our $messagesref = \%messages;
Returns a SHA digest. Digest SHA1 is potentially collision prone but available on many commodity hosting platforms, so it's default if cclite can't find SHA2
FIXME: 7/2010 use Digest changed to require, so these are invoked at runtime, performance hit but easier setup, also they are in a function, at present
Changed 7/2013 to use Digest::SHA others are now deprecated and this is in core Perl...
sub _get_digest { my ( $url_type, @hash_items ) = @_; my $digest; my $sha_obj; my $type; my %configuration = readconfiguration() if ( $0 !~ /ccinstall/ ); my ( $os, $distribution, $package_type ) = get_os_and_distribution(); eval { # ne windows removed 2014, Digest supporting sha2 now in core modules if ( $configuration{hash_type} eq 'sha2' ) { $type = "sha2"; } elsif ( $configuration{hash_type} eq 'sha1' ) { $type = "sha1"; } else { die "bad hash type in configuration $configuration{hash_type}, must sha2 or sha1"; } }; if ($@) { die "bad hash type in configuration $configuration{hash_type}, or digest sha1 or sha2 not present"; } if ( $type eq "sha2" ) { $sha_obj = sha512(@hash_items); } elsif ( $type eq "sha1" ) { $sha_obj = sha1(@hash_items); } # now turn into base64, pad if not url, urlencode if url if ($url_type) { $digest = encode_base64url($sha_obj); } else { $digest = encode_base64($sha_obj); } return $digest; }
This is a tramp function that exposes _get_digest Passwords should now be stored as base64 url safe rather than plain base64
sub text_to_hash { my ($text) = @_; my $url_type = 1; my $hash = _get_digest( $url_type, ($text) ); return $hash; }
Compares the input hashed password with the stored one. Normally this would take place over an https connection too.
sub compare_password { my ( $password_in, $cleartext, $password_stored ) = @_; if ( $password_in ne $password_stored ) { # already hashed return 0; } else { return 1; } }
The token is a hash of the user, their current address (avoids some man in the middle and some replay and the private value which is never exposed to the network and changed frequently (we hope).
The hashref is either the fields reference or the cookie reference
sub calculate_token { my ( $registry_private_value, $fieldsref, $cookieref, $remote_address ) = @_; my ( $package, $filename, $line ) = caller; my $token; my $url_type = 1; # these are url type hashes if ( !length($cookieref) ) { my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time); #FIXME: time gives a little volatility but improve EGD perhaps? my $nonce = join( '', $sec, $min, $hour ); $nonce = _get_digest( $url_type, $nonce ); $token = _get_digest( $url_type, $fieldsref->{'userLogin'}, $nonce, $remote_address ); return ( $token, $nonce ); } else { $token = _get_digest( $url_type, $cookieref->{'userLogin'}, $cookieref->{'token1'}, $remote_address ); return ( $token, undef ); } }
recalculate the token for existing input, return true, if it still works and compare it. Return 1 if the recalculated token is valid.
This is switched off at present and maybe should become dead code...
sub valid_token { my ( $registry_private_value, $user, $remote_address, $token ) = @_; my $url_type = 0; my $compare = _get_digest( $url_type, $registry_private_value, $user, $remote_address ); if ( $compare == $token ) { return 1; } else { return 1; } }
The hashed api key is the api key + the remote address
FIXME:This version loops through a list of comma separated allowed ip addresses. This is not very scalable and possibly error-prone however, it does permit one cclite installation to serve several passthroughs
sub calculate_api_hash { my ( $db, $token ) = @_; my @calculated_hashes; my ( $registry_error, $hash_ref ) = Cclitedb::get_where( 'local', $db, 'om_registry', '*', 'id', 1, '', '', '' ); # space separated list of IP addresses, relaxed in 5/2010 to multiple spaces... my @allowed_ip_addresses = split( /\s+/, $hash_ref->{'allow_ip_list'} ); foreach my $ip_address (@allowed_ip_addresses) { my $merchant_key_hash = _get_digest( 0, ( $hash_ref->{'merchant_key'} . $ip_address ) ); push @calculated_hashes, $merchant_key_hash; } return \@calculated_hashes; }
FIXME: This is not in its final form, which should be OAuth based, this is proof of concept If this fails, some logging should be included, possible break-in The hashed api key is the api key (which should be a gpg key after a while) for the registry, the remote address
FIXME:This version loops through a list of comma separated addresses. This is not very scalable and possibly error-prone however, it does permit a single cclite installation to serve several passthroughs
sub compare_api_key { my ( $db, $merchant_key_hash, $token ) = @_; my $merchant_hash_array_ref = calculate_api_hash( $db, $token ); my @calculated_hashes = @$merchant_hash_array_ref; # retranslate from url-safe translation in php module $merchant_key_hash =~ tr/-_/+\//; # not pretty because if any of them match, it returns...bad scale and doesn't ensure that the 'right' one... foreach my $hash (@calculated_hashes) { if ( $hash eq $merchant_key_hash ) { return 1; } } return 0; }
put the password into a hash changed this to change the hashing method, currently sha2
url_type is 0 =cut
sub hash_password { my ( $url_type, $cleartext ) = @_; # password is always passed around as hash my $hash_value = _get_digest( $url_type, $cleartext ); my $l = length($cleartext); return $hash_value; }
find out where served using environment variables ---- check for phishing here?
Domain is now deduced as first bit of path, not server correctly on desktop debian for example 11/2009, this affects cookie release as Laura's note...
FIXME: Not rigorous since https and 443 aren't 'married'
sub get_server_details { my $portstring = ":$ENV{SERVER_PORT}" if ( $ENV{SERVER_PORT} != 80 && $ENV{SERVER_PORT} != 443 ); my $domain = $ENV{SERVER_NAME}; my $httpstring = "http://"; $httpstring = "https://" if ( $ENV{SERVER_PORT} == 443 ); my $home = "$httpstring$domain$portstring$ENV{SCRIPT_NAME}"; return ( $home, $domain ); }
Routine to protect batch scripts by testing token cookies
sub gatekeeper { }
Log token failures etc. here..needs a new db table creates a record in om_log, type, user, ipaddress
There also needs to be a fingerprint log for transactions too
This is probably taken care of using log4perl right now
sub log_violation { return 1; }
Generate a fairly random password for one that's been forgotten
sub random_password { my $password; my $_rand; my $password_length = $_[0]; if ( !$password_length ) { $password_length = 10; } my @chars = split( " ", "a b c d e f g h i j k l m n o p q r s t u v w x y z - _ % # | 0 1 2 3 4 5 6 7 8 9" ); srand; for ( my $i = 0 ; $i <= $password_length ; $i++ ) { $_rand = int( rand 41 ); $password .= $chars[$_rand]; } return $password; }
grumble about installer present and writable files etc. mainly installer for the present
Added $installer_present to get menu link in ccadmin.cgi
sub install_grumble { my $base_path = $0; $base_path =~ s/^(.*?)\/cgi-bin.*$/$1/; my $installer_present = 0; my @grumbles; my $configfile = "$base_path/config/cclite.cf"; if ( -e $configfile && -w $configfile ) { push @grumbles, $messages{'cclitecfinsecure'}; } my $cgiinstall = "$base_path/cgi-bin/protected/ccinstall.cgi"; if ( -e $cgiinstall && -x $cgiinstall ) { push @grumbles, $messages{'ccinstallinsecure'}; $installer_present = 1; } # grumble about soap server also insecure my $soapserver = "$base_path/cgi-bin/ccserver.cgi/"; if ( -e $soapserver && -x $soapserver ) { push @grumbles, $messages{'ccsoapserverinsecure'}; } # turn off this grumble for the moment: people don't want it 10/2009 # and hard to fix... ### if ( $ENV{SERVER_PORT} != 443 ) { ### push @grumbles, "please use https if possible!"; ### } my ( $os, $distribution, $package_type ) = get_os_and_distribution(); my $grumbling; $grumbling = join( "<br/>", @grumbles ) if ( $os ne 'windows' ); return ( $installer_present, $grumbling ); }
Very crude method of determining whether the administration script is being run. Should be replaced by something more secure and subtle.
FIXME: Should also check token to provide some assurance that session is not hijacked
sub is_admin { my $is_admin = 0; my $cookieref = get_cookie(); $is_admin = 1 if ( $cookieref->{userLevel} eq "admin" ); return $is_admin; } sub encode_base64 { my ($data) = @_; $data =~ tr|+/=|\-_|d; return $data; } sub decode_base64 { my ($data) = @_; # +/ should not be handled, so convert them to invalid chars # also, remove spaces (\t..\r and SP) so as to calc padding len $data =~ tr|\-_\t-\x0d |+/|d; my $mod4 = length($data) % 4; if ($mod4) { $data .= substr( '====', $mod4 ); } return $data; }
## Author: David Shu # Created: 5/26/2005 # Description: This is a collection of functions that will assist in # working with salted SHA (SSHA) passwords. #
# # Description: Extracts the prefix portion of the hashed password # Parameters: hashed password => (required; the hashed password must contain # the appropriate prefix) # Return: scheme (string) # sub getpassscheme { my $hashed_pass = shift;
# extract prefix from hash $hashed_pass =~ m/{([^}]*)/; return $1; }
# # Description : Extracts the hash portion of the hashed password # Parameters : hashed password => (required; the hashed password must contain # the appropriate prefix) # Return : hash (string) # sub getpasshash { my $hashed_pass = shift;
# extract hash from passwordhash $hashed_pass =~ m/}([^s]*)/; return $1; }
# # Description : Generate a SHA or SSHA hash # Parameters : password => clear text (required) # salted => boolean (optional; default = FALSE) # salt => hexString (optional; default = ""; a random salt will be # generated if none is provided # Return : Hash (string) # sub generatesha { my ( $password, $salted, $salt ) = @_;
if ( $salted && $salt eq "" ) { $salt = generatehexsalt(); }
my $hashed_pass = ""; my $ctx = Digest::SHA1->new; $ctx->add($password); print $password; if ($salted) { print $salt; $salt = pack( "H*", $salt ); $ctx->add($salt); $hashed_pass = encode_base64( $ctx->digest . $salt, '' );
} else { $hashed_pass = encode_base64( $ctx->digest, '' ); }
return $hashed_pass; }
# # Description : Generate a SHA or SSHA hashed password; same as generatesha # but adds the appropriate prefix # Parameters : password => clear text (required) # salted => boolean (optional; default = FALSE) # salt => hexString (optional; default = ""; a random salt will be # generated if none is provided # Return : Hashed Password (string) # sub generateshawithprefix { my ( $password, $salted, $salt ) = @_;
my $hashed_pass = "";
if ( !$salted ) { $hashed_pass = "{SHA}" . generatesha( $password, $salted, $salt ); } else { $hashed_pass = "{SSHA}" . generatesha( $password, $salted, $salt ); }
return $hashed_pass; }
# # Description : Randomly generate a 4 byte hex-based string # Parameters : N/a # Return : Hex based salt (string) # sub generatehexsalt {
# RANDOM KEY PARAMETERS my @keychars = ( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" ); my @keychars_initial = ( "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" ); my $length = 8;
# RANDOM KEY GENERATOR my $randkey = ""; for ( my $i = 0 ; $i < $length ; $i++ ) { if ( $i == 0 ) { $randkey .= $keychars_initial[ int( rand(15) ) ]; } else { $randkey .= $keychars[ int( rand(16) ) ]; } }
return $randkey; }
#
# Description : Extracts the hex based salt that was used in the hashed password
# Parameters : hashed password => (required; the hashed password must contain
# the appropriate prefix)
# Return : Hex based salt (string)
#
sub extractsalt {
my ($hashed_pass) = @_;
my $hash = getpasshash($hashed_pass)
;
my $ohash = decode_base64($hash);
my $osalt = substr( $ohash, 20 );
return join( "", unpack( "H*", $osalt ) );
}
#
# Description : Compare the hashed password with the clear text password;
# Currently this only supports 3 password schemes (all are
# base64 encoded):
# 1) SSHA (sha1 algorithm)
# 2) SHA (sha1 algorithm)
# 3) MD5
# Parameters : hashed password => (required; the hashed password must contain
# the appropriate prefix)
# cleartext password => (required)
# Return : 1/0
#
sub validatepassword {
my ( $hashed_pass, $clear_pass ) = @_;
my $scheme = lc( getpassscheme($hashed_pass)
);
my $hash = getpasshash($hashed_pass)
;
$clear_pass =~ s/^s+//g;
$clear_pass =~ s/s+$//g;
my $retval = 0;
if ( $scheme eq "ssha" ) {
my $salt = extractsalt($hashed_pass)
;
my $hpass = generatesha( $clear_pass, 1, $salt );
if ( $hash eq $hpass ) { $retval = 1; } } elsif ( $scheme eq "sha" ) { my $hpass = generatesha( $clear_pass, 0, "" ); if ( $hash eq $hpass ) { $retval = 1; } } else { my $hpass = encode_base64( pack( "H*", md5($clear_pass) ) ); if ( $hash eq $hpass ) { $retval = 1; } }
return $retval; }
# Skeleton OAuth processing 07/2011
Experimental oauth token supply and checking etc. This is to complete the open transact work and also to replace the hand-rolled api access method in previous releases....
These calls exit here after supplying the tokens
sub do_oauth {
my ( $class, $db, $fields_ref, $token ) = @_;
print "Content-Type: text/html; charset=utf-8\n\n"; print "in do auth $fields_ref->{'registry'}";
###require "Net::OAuth" ;
# temporary parameters... $fields_ref->{'consumer_key'} = '123123';
$Net::OAuth::PROTOCOL_VERSION = 'Net::OAuth::PROTOCOL_VERSION_1_0A';
my $request = Net::OAuth->request("request token")->from_hash( {$fields_ref}, consumer_key => $fields_ref->{'consumer_key'}, request_url => $fields_ref->{'request_url'}, signature_method => 'HMAC-SHA1', request_method => $ENV{'REQUEST_METHOD'}, timestamp => time(), nonce => '123123', consumer_secret => '123123', );
if ( !$request->verify ) { die "Signature verification failed"; } else {
# Service Provider sends Request Token Response
my $response = Net::OAuth->response("request token")->new( token => 'abcdef', token_secret => '0123456', callback_confirmed => 'true', );
print $response->to_post_body;
} exit 0; }
1;


| Package | Description |
|---|---|
| org.apache.fop.area |
FOP's area tree.
|
| org.apache.fop.area.inline |
FOP's area tree: inline-level areas
|
| org.apache.fop.complexscripts.bidi | |
| org.apache.fop.layoutmgr.inline |
Layout managers for inline formatting objects and line building.
|
| org.apache.fop.render |
Generic renderer interface.
|
| org.apache.fop.render.intermediate | |
| org.apache.fop.render.java2d |
Java2D Renderer which paints rendered pages on Graphics2D instances.
|
| org.apache.fop.render.txt |
Plain Text Renderer
|
| org.apache.fop.render.xml |
Area Tree XML Renderer.
|
| Class and Description |
|---|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| Class and Description |
|---|
| AbstractTextArea
Abstract base class for both TextArea and Character.
|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| InlineArea.InlineAdjustingInfo
this class stores information about potential adjustments
that can be used in order to re-compute adjustments when a
page-number or a page-number-citation is resolved
|
| InlineParent
Inline parent area.
|
| TextArea
A text inline area.
|
| Class and Description |
|---|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| Class and Description |
|---|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| InlineParent
Inline parent area.
|
| Class and Description |
|---|
| Container
Container area for inline container.
|
| ForeignObject
Foreign object inline area.
|
| Image
Image area for external-graphic.
|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| InlineBlock
This is the inline block area class.
|
| InlineBlockParent
Inline block parent area.
|
| InlineParent
Inline parent area.
|
| InlineViewport
Inline viewport area.
|
| Leader
This is a leader inline area.
|
| Space
Inline space area.
|
| SpaceArea
A space
|
| TextArea
A text inline area.
|
| WordArea
A string of characters without spaces
|
| Class and Description |
|---|
| ForeignObject
Foreign object inline area.
|
| Image
Image area for external-graphic.
|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| InlineParent
Inline parent area.
|
| InlineViewport
Inline viewport area.
|
| Leader
This is a leader inline area.
|
| SpaceArea
A space
|
| TextArea
A text inline area.
|
| WordArea
A string of characters without spaces
|
| Class and Description |
|---|
| Image
Image area for external-graphic.
|
| Leader
This is a leader inline area.
|
| TextArea
A text inline area.
|
| Class and Description |
|---|
| Image
Image area for external-graphic.
|
| TextArea
A text inline area.
|
| Class and Description |
|---|
| Container
Container area for inline container.
|
| ForeignObject
Foreign object inline area.
|
| Image
Image area for external-graphic.
|
| InlineArea
Inline Area
This area is for all inline areas that can be placed
in a line area.
|
| InlineBlock
This is the inline block area class.
|
| InlineBlockParent
Inline block parent area.
|
| InlineParent
Inline parent area.
|
| InlineViewport
Inline viewport area.
|
| Leader
This is a leader inline area.
|
| Space
Inline space area.
|
| SpaceArea
A space
|
| TextArea
A text inline area.
|
| WordArea
A string of characters without spaces
|
Copyright 1999-2020 The Apache Software Foundation. All Rights Reserved.


Export service
Download: Search query returned a .tar file with size more than 2GB, please download the files in parts.
${query}_${x+1}


Web Developer
Thank you for visiting my website. My name is Li Zhang. I am a Web Developer based in Irvine, CA.
Science and Technology have been two of my life-long passions. I like to think and to create. With a background in scientific research, I bring logical thinking and strong problem-solving skills into the projects I work on. I love taking on challenges, and strive to keep learning and growing as a professional.
When I am not writing code, I enjoy reading and hiking.


Brackets is a new open source code editor for HTML, CSS and JavaScript built with HTML, CSS and JavaScript.
Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript. Adobe PhoneGap is a distribution of Apache Cordova.
Want to contribute to the Apache Cordova project? Check out the project page at the Apache Foundation.
Want to build mobile applications using HTML, CSS and JavaScript? Learn more about PhoneGap Build.
Did you know that Adobe made extensive contributions to jQuery Mobile to help create a framework based on the principles of progressive enhancement and accessibility? It was truly a community effort and we were thrilled to help make jQuery Mobile a reality.
Check out the jQuery Mobile page to download builds, samples and learn more about this touch-optimized mobile framework.
Adobe's Web Platform team is actively contributing to WebKit by focusing on new features related to CSS layout (like CSS Regions and CSS Exclusions), visual effects (like CSS Custom Filters), and SVG.
We also want to make a WebKit developer's life easier by making improvements to WebKit release engineering, performance testing and automated testing.
If you want to learn more about the future of the web, check out what new standards Adobe is championing.
Partnering with gskinner.com, Adobe is sponsoring CreateJS, a suite of open source JavaScript libraries for building rich and interactive experiences. Comprising EaselJS, TweenJS, SoundJS, and PreloadJS, you can choose to work with these libraries either independently or combined in a way that best suits your needs.
Visit the CreateJS page to learn more about the capabilities of this framework and download it so you can start building expressive content with HTML5.
Brackets is a new open source code editor for HTML, CSS and JavaScript built with HTML, CSS and JavaScript.
Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript. Adobe PhoneGap is a distribution of Apache Cordova.
Want to contribute to the Apache Cordova project? Check out the project page at the Apache Foundation.
Want to build mobile applications using HTML, CSS and JavaScript? Learn more about PhoneGap Build.
Did you know that Adobe made extensive contributions to jQuery Mobile to help create a framework based on the principles of progressive enhancement and accessibility? It was truly a community effort and we were thrilled to help make jQuery Mobile a reality.
Check out the jQuery Mobile page to download builds, samples and learn more about this touch-optimized mobile framework.
Adobe's Web Platform team is actively contributing to WebKit by focusing on new features related to CSS layout (like CSS Regions and CSS Exclusions), visual effects (like CSS Custom Filters), and SVG.
We also want to make a WebKit developer's life easier by making improvements to WebKit release engineering, performance testing and automated testing.
If you want to learn more about the future of the web, check out what new standards Adobe is championing.
Partnering with gskinner.com, Adobe is sponsoring CreateJS, a suite of open source JavaScript libraries for building rich and interactive experiences. Comprising EaselJS, TweenJS, SoundJS, and PreloadJS, you can choose to work with these libraries either independently or combined in a way that best suits your needs.
Visit the CreateJS page to learn more about the capabilities of this framework and download it so you can start building expressive content with HTML5.
Brackets is a new open source code editor for HTML, CSS and JavaScript built with HTML, CSS and JavaScript.
Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript. Adobe PhoneGap is a distribution of Apache Cordova.
Want to contribute to the Apache Cordova project? Check out the project page at the Apache Foundation.
Want to build mobile applications using HTML, CSS and JavaScript? Learn more about PhoneGap Build.
Did you know that Adobe made extensive contributions to jQuery Mobile to help create a framework based on the principles of progressive enhancement and accessibility? It was truly a community effort and we were thrilled to help make jQuery Mobile a reality.
Check out the jQuery Mobile page to download builds, samples and learn more about this touch-optimized mobile framework.
Adobe's Web Platform team is actively contributing to WebKit by focusing on new features related to CSS layout (like CSS Regions and CSS Exclusions), visual effects (like CSS Custom Filters), and SVG.
We also want to make a WebKit developer's life easier by making improvements to WebKit release engineering, performance testing and automated testing.
If you want to learn more about the future of the web, check out what new standards Adobe is championing.
Partnering with gskinner.com, Adobe is sponsoring CreateJS, a suite of open source JavaScript libraries for building rich and interactive experiences. Comprising EaselJS, TweenJS, SoundJS, and PreloadJS, you can choose to work with these libraries either independently or combined in a way that best suits your needs.
Visit the CreateJS page to learn more about the capabilities of this framework and download it so you can start building expressive content with HTML5.
Brackets is a new open source code editor for HTML, CSS and JavaScript built with HTML, CSS and JavaScript.
Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript. Adobe PhoneGap is a distribution of Apache Cordova.
Want to contribute to the Apache Cordova project? Check out the project page at the Apache Foundation.
Want to build mobile applications using HTML, CSS and JavaScript? Learn more about PhoneGap Build.
Did you know that Adobe made extensive contributions to jQuery Mobile to help create a framework based on the principles of progressive enhancement and accessibility? It was truly a community effort and we were thrilled to help make jQuery Mobile a reality.
Check out the jQuery Mobile page to download builds, samples and learn more about this touch-optimized mobile framework.
Adobe's Web Platform team is actively contributing to WebKit by focusing on new features related to CSS layout (like CSS Regions and CSS Exclusions), visual effects (like CSS Custom Filters), and SVG.
We also want to make a WebKit developer's life easier by making improvements to WebKit release engineering, performance testing and automated testing.
If you want to learn more about the future of the web, check out what new standards Adobe is championing.
Partnering with gskinner.com, Adobe is sponsoring CreateJS, a suite of open source JavaScript libraries for building rich and interactive experiences. Comprising EaselJS, TweenJS, SoundJS, and PreloadJS, you can choose to work with these libraries either independently or combined in a way that best suits your needs.
Visit the CreateJS page to learn more about the capabilities of this framework and download it so you can start building expressive content with HTML5.♦


public interface Scheduler
| 限定符和类型 | 接口和说明 |
|---|---|
static interface |
Scheduler.Cancellable
This interface represents an object whose execution may be cancelled during runtime.
|
static class |
Scheduler.ReschedulingRunnable
This class encapsulates the scheduling of a
Runnable that needs to be repeated on a interval. |
| 限定符和类型 | 方法和说明 |
|---|---|
static boolean |
awaitTermination(java.util.concurrent.ScheduledThreadPoolExecutor scheduledThreadPoolExecutor,
long timeout,
java.util.concurrent.TimeUnit timeUnit) |
static java.util.concurrent.ScheduledThreadPoolExecutor |
initScheduler(Settings settings) |
default java.lang.Runnable |
preserveContext(java.lang.Runnable command)
Does nothing by default but can be used by subclasses to save the current thread context and wraps the command in a Runnable
that restores that context before running the command.
|
java.util.concurrent.ScheduledFuture<?> |
schedule(TimeValue delay,
java.lang.String executor,
java.lang.Runnable command)
Schedules a one-shot command to be run after a given delay.
|
default Scheduler.Cancellable |
scheduleWithFixedDelay(java.lang.Runnable command,
TimeValue interval,
java.lang.String executor)
Schedules a periodic action that runs on scheduler thread.
|
static boolean |
terminate(java.util.concurrent.ScheduledThreadPoolExecutor scheduledThreadPoolExecutor,
long timeout,
java.util.concurrent.TimeUnit timeUnit) |
static java.util.concurrent.ScheduledThreadPoolExecutor initScheduler(Settings settings)
static boolean terminate(java.util.concurrent.ScheduledThreadPoolExecutor scheduledThreadPoolExecutor, long timeout, java.util.concurrent.TimeUnit timeUnit)
static boolean awaitTermination(java.util.concurrent.ScheduledThreadPoolExecutor scheduledThreadPoolExecutor, long timeout, java.util.concurrent.TimeUnit timeUnit)
default java.lang.Runnable preserveContext(java.lang.Runnable command)
java.util.concurrent.ScheduledFuture<?> schedule(TimeValue delay, java.lang.String executor, java.lang.Runnable command)
preserveContext(Runnable)
on the runnable before passing
it to this method.
The command runs on scheduler thread. Do not run blocking calls on the scheduler thread. Subclasses may allow
to execute on a different executor, in which case blocking calls are allowed.delay
- delay before the task executesexecutor
- the name of the executor that has to execute this task. Ignored in the default implementation but can be used
by subclasses that support multiple executors.command
- the command to runEsRejectedExecutionException
- if the task cannot be scheduled for executiondefault Scheduler.Cancellable scheduleWithFixedDelay(java.lang.Runnable command, TimeValue interval, java.lang.String executor)
command
- the action to takeinterval
- the delay intervalexecutor
- the name of the executor that has to execute this task. Ignored in the default implementation but can be used
by subclasses that support multiple executors.Scheduler.Cancellable
that can be used to cancel the subsequent runs of the command. If the command is running, it will
not be interrupted.


class Gem::Version
The Version class processes string versions into comparable values. A version string should normally be a series of numbers separated by periods. Each part (digits separated by periods) is considered its own number, and these are used for sorting. So for instance, 3.10 sorts higher than 3.2 because ten is greater than two.
If any part contains letters (currently only a-z are supported) then that version is considered prerelease. Versions with a prerelease part in the Nth part sort less than versions with N-1 parts. Prerelease parts are sorted alphabetically using the normal Ruby string sorting rules. If a prerelease part contains both letters and numbers, it will be broken into multiple parts to provide expected sort behavior (1.0.a10 becomes 1.0.a.10, and is greater than 1.0.a9).
Prereleases sort between real releases (newest to oldest):
-
1.0
-
1.0.b1
-
1.0.a.2
-
0.9
If you want to specify a version restriction that includes both prereleases and regular releases of the 1.x series this is the best way:
s.add_dependency 'example', '>= 1.0.0.a', '< 2.0.0'
How Software Changes¶ ↑
Users expect to be able to specify a version constraint that gives them some reasonable expectation that new versions of a library will work with their software if the version constraint is true, and not work with their software if the version constraint is false. In other words, the perfect system will accept all compatible versions of the library and reject all incompatible versions.
Libraries change in 3 ways (well, more than 3, but stay focused here!).
-
The change may be an implementation detail only and have no effect on the client software.
-
The change may add new features, but do so in a way that client software written to an earlier version is still compatible.
-
The change may change the public interface of the library in such a way that old software is no longer compatible.
Some examples are appropriate at this point. Suppose I have a Stack class
that supports a push
and a pop
method.
Examples of Category 1 changes:¶ ↑
-
Switch from an array based implementation to a linked-list based implementation.
-
Provide an automatic (and transparent) backing store for large stacks.
Examples of Category 2 changes might be:¶ ↑
-
Add a
depth
method to return the current depth of the stack. -
Add a
top
method that returns the current top of stack (without changing the stack). -
Change
push
so that it returns the item pushed (previously it had no usable return value).
Examples of Category 3 changes might be:¶ ↑
-
Changes
pop
so that it no longer returns a value (you must usetop
to get the top of the stack). -
Rename the methods to
push_item
andpop_item
.
RubyGems Rational Versioning¶ ↑
-
Versions shall be represented by three non-negative integers, separated by periods (e.g. 3.1.4). The first integers is the “major” version number, the second integer is the “minor” version number, and the third integer is the “build” number.
-
A category 1 change (implementation detail) will increment the build number.
-
A category 2 change (backwards compatible) will increment the minor version number and reset the build number.
-
A category 3 change (incompatible) will increment the major build number and reset the minor and build numbers.
-
Any “public” release of a gem should have a different version. Normally that means incrementing the build number. This means a developer can generate builds all day long, but as soon as they make a public release, the version must be updated.
Examples¶ ↑
Let's work through a project lifecycle using our Stack example from above.
- Version 0.0.1
-
The initial Stack class is release.
- Version 0.0.2
-
Switched to a linked=list implementation because it is cooler.
- Version 0.1.0
-
Added a
depth
method. - Version 1.0.0
-
Added
top
and madepop
return nil (pop
used to return the old top item). - Version 1.1.0
-
push
now returns the value pushed (it used it return nil). - Version 1.1.1
-
Fixed a bug in the linked list implementation.
- Version 1.1.2
-
Fixed a bug introduced in the last fix.
Client A needs a stack with basic push/pop capability. They write to the
original interface (no top
), so their version constraint looks
like:
gem 'stack', '>= 0.0'
Essentially, any version is OK with Client A. An incompatible change to the library will cause them grief, but they are willing to take the chance (we call Client A optimistic).
Client B is just like Client A except for two things: (1) They use the
depth
method and (2) they are worried about future
incompatibilities, so they write their version constraint like this:
gem 'stack', '~> 0.1'
The depth
method was introduced in version 0.1.0, so that
version or anything later is fine, as long as the version stays below
version 1.0 where incompatibilities are introduced. We call Client B
pessimistic because they are worried about incompatible future changes (it
is OK to be pessimistic!).
Preventing Version Catastrophe:¶ ↑
From: blog.zenspider.com/2008/10/rubygems-howto-preventing-cata.html
Let's say you're depending on the fnord gem version 2.y.z. If you specify your dependency as “>= 2.0.0” then, you're good, right? What happens if fnord 3.0 comes out and it isn't backwards compatible with 2.y.z? Your stuff will break as a result of using “>=”. The better route is to specify your dependency with an “approximate” version specifier (“~>”). They're a tad confusing, so here is how the dependency specifiers work:
Specification From ... To (exclusive) ">= 3.0" 3.0 ... ∞ "~> 3.0" 3.0 ... 4.0 "~> 3.0.0" 3.0.0 ... 3.1 "~> 3.5" 3.5 ... 4.0 "~> 3.5.0" 3.5.0 ... 3.6 "~> 3" 3.0 ... 4.0
For the last example, single-digit versions are automatically extended with a zero to give a sensible result.
Public Class Methods
True if the version
string matches RubyGems' requirements.
# File lib/rubygems/version.rb, line 171 def self.correct? version version.to_s =~ ANCHORED_VERSION_PATTERN end
Factory method to create a Version object. Input may be a Version or a String. Intended to simplify client code.
ver1 = Version.create('1.3.17') # -> (Version object) ver2 = Version.create(ver1) # -> (ver1) ver3 = Version.create(nil) # -> nil
# File lib/rubygems/version.rb, line 183 def self.create input if self === input then # check yourself before you wreck yourself input elsif input.nil? then nil else new input end end
Constructs a Version from the
version
string. A version string is a series of digits or
ASCII letters separated by dots.
# File lib/rubygems/version.rb, line 205 def initialize version unless self.class.correct?(version) raise ArgumentError, "Malformed version number string #{version}" end # If version is an empty string convert it to 0 version = 0 if version =~ /\A\s*\Z/ @version = version.to_s.strip.gsub("-",".pre.") @segments = nil end
Public Instance Methods
Compares this version with other
returning -1, 0, or 1 if the
other version is larger, the same, or smaller than this one. Attempts to
compare to something that's not a Gem::Version
return
nil
.
# File lib/rubygems/version.rb, line 335 def <=> other return unless Gem::Version === other return 0 if @version == other._version lhsegments = _segments rhsegments = other._segments lhsize = lhsegments.size rhsize = rhsegments.size limit = (lhsize > rhsize ? lhsize : rhsize) - 1 i = 0 while i <= limit lhs, rhs = lhsegments[i] || 0, rhsegments[i] || 0 i += 1 next if lhs == rhs return -1 if String === lhs && Numeric === rhs return 1 if Numeric === lhs && String === rhs return lhs <=> rhs end return 0 end
A recommended version for use with a ~> Requirement.
# File lib/rubygems/version.rb, line 319 def approximate_recommendation segments = self.segments segments.pop while segments.any? { |s| String === s } segments.pop while segments.size > 2 segments.push 0 while segments.size < 2 "~> #{segments.join(".")}" end
Return a new version object where the next to the last revision number is one greater (e.g., 5.3.1 => 5.4).
Pre-release (alpha) parts, e.g, 5.3.1.b.2 => 5.4, are ignored.
# File lib/rubygems/version.rb, line 223 def bump @bump ||= begin segments = self.segments segments.pop while segments.any? { |s| String === s } segments.pop if segments.size > 1 segments[-1] = segments[-1].succ self.class.new segments.join(".") end end
Dump only the raw version string, not the complete object. It's a string for backwards (RubyGems 1.3.5 and earlier) compatibility.
# File lib/rubygems/version.rb, line 258 def marshal_dump [version] end
Load custom marshal format. It's a string for backwards (RubyGems 1.3.5 and earlier) compatibility.
# File lib/rubygems/version.rb, line 266 def marshal_load array initialize array[0] end
A version is considered a prerelease if it contains a letter.
# File lib/rubygems/version.rb, line 287 def prerelease? unless instance_variable_defined? :@prerelease @prerelease = !!(@version =~ /[a-zA-Z]/) end @prerelease end
The release for this version (e.g. 1.2.0.a -> 1.2.0). Non-prerelease versions return themselves.
# File lib/rubygems/version.rb, line 302 def release @release ||= if prerelease? segments = self.segments segments.pop while segments.any? { |s| String === s } self.class.new segments.join('.') else self end end
Protected Instance Methods
# File lib/rubygems/version.rb, line 368 def _segments # segments is lazy so it can pick up version values that come from # old marshaled versions, which don't go through marshal_load. # since this version object is cached in @@all, its @segments should be frozen @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s| /^\d+$/ =~ s ? s.to_i : s end.freeze end
# File lib/rubygems/version.rb, line 364 def _version @version end


dc2qtn
Grammar
qtn = dc2qtn( dc )
Global variables
---
Explanation
Function which calculates a quaternion from a direction cosine matrix.
Details
Consider a coordinate transform from I reference frame to J reference frame.
This transformation can be expressed as a rotation around some axis.
Let R be a vector of the axis of rotation, and th be an angle of rotation.
A quaternion is defined as follows.


Responses to open-ended questions on EIDs
Escape of a genetically engineered highly pathogenic transmissible agent.
Rapid global spread of a hypervirulent respiratory virus.
High pathogenicity virus spread by ubiquitous day-biting mosquitoes.
High pathogenicity virus with a long presymptomatic period or absence of symptoms in some infectious individuals (‘silent man’) or prolonged viral shedding post recovery.
Improving basic EID literacy (professionals, politicians and public)
Enhanced EID surveillance and risk mapping.
Defining the mechanisms of pathogen host species ‘jumping’.
Understanding social mobility and community network structures.
Eco-friendly infection control conscious city planning.
Protecting frontline staff.
Immunisation strategies for disease prevention and outbreak response.
Developing rapid accurate diagnostics and effective treatment.
Minimising adverse economic impacts.
Advanced scenario planning to guide action in an emergency.
What are all the infectious agents that exist in nature and their respective spill-over risk to humans?
How to accurately value ecosystem services and the societal cost of human-induced ecosystem disturbance?
Accepted levels of public surveillance, including strategies for early outbreak detection and transmission chain tracking.
Justification for escalating degrees of intervention.
How to keep the public informed during a crisis.
Compensation for those affected by disease containment strategies.
Balancing individual and community risks/benefits in decision-making.
Balancing the best interests of current and future generations.
EID, Emerging Infectious Disease.


|
SC2API
An API for AI for StarCraft II
|
A unit. Could be a structure, a worker or a military unit. More...
#include <sc2_unit.h>
Public Types | |
| enum | DisplayType { Visible = 1, Snapshot = 2, Hidden = 3 } |
| If the unit is shown on screen or not. More... | |
| enum | Alliance { Self = 1, Ally = 2, Neutral = 3, Enemy = 4 } |
| Relationship to this player. More... | |
| enum | CloakState { Cloaked = 1, CloakedDetected = 2, NotCloaked = 3, Unknown = 4 } |
| Unit cloak state. More... | |
Public Member Functions | |
| operator Tag () const | |
Public Attributes | |
| DisplayType | display_type |
| If the unit is shown on screen or not. | |
| Alliance | alliance |
| Relationship of the unit to this player. | |
| Tag | tag |
| A unique identifier for the instance of a unit. | |
| UnitTypeID | unit_type |
| An identifier of the type of unit. | |
| int | owner |
| Which player owns a unit. | |
| Point3D | pos |
| Position of the unit in the world. | |
| float | facing |
| Direction the unit faces in radians (1 radian == 57.296 degrees) | |
| float | radius |
| Radius of the unit. | |
| float | build_progress |
| Gives progress under construction. Range: [0.0, 1.0]. 1.0 == finished. | |
| CloakState | cloak |
| If the unit is cloaked. | |
| float | detect_range |
| Range of detector for detector units. | |
| float | radar_range |
| Range of radar for units that are radar units. | |
| bool | is_selected |
| If the unit is in the current selection of the player. | |
| bool | is_on_screen |
| Visible and within the camera frustum. | |
| bool | is_blip |
| Detected by sensor tower. | |
| float | health |
| Health of the unit. Not set for snapshots. | |
| float | health_max |
| Max health for the unit. Not set for snapshots. | |
| float | shield |
| Shield of the unit. Not set for snapshots. | |
| float | energy |
| Energy of the unit. Not set for snapshots. | |
| int | mineral_contents |
| Amount of minerals if the unit is a mineral field. Not set for snapshots. | |
| int | vespene_contents |
| Amount of vespene if the unit is a geyser. Not set for snapshots. | |
| bool | is_flying |
| If the unit is flying. Not set for snapshots. | |
| bool | is_burrowed |
| If the unit is burrowed. Not set for snapshots. | |
| float | weapon_cooldown |
| Time remaining for a weapon on cooldown. Not set for snapshots. | |
| std::vector< UnitOrder > | orders |
| Orders on a unit. Only valid for this player's units. | |
| Tag | add_on_tag |
| Add-on like a tech lab or reactor. Only valid for this player's units. | |
| std::vector< PassengerUnit > | passengers |
| Passengers in this transport. Only valid for this player's units. | |
| int | cargo_space_taken |
| Number of cargo slots used in the transport. Only valid for this player's units. | |
| int | cargo_space_max |
| Number of cargo slots available for a transport. Only valid for this player's units. | |
| int | assigned_harvesters |
| Number of harvesters associated with a town hall (e.g., Command Center). Only valid for this player's units. | |
| int | ideal_harvesters |
| Number of harvesters that can be assigned to a town hall (e.g., Command Center). Only valid for this player's units. | |
| Tag | engaged_target_tag |
| Target unit of a unit. Only valid for this player's units. | |
| std::vector< BuffID > | buffs |
| Buffs on this unit. Only valid for this player's units. | |
| bool | is_powered |
| Whether the unit is powered by a pylon. | |
A unit. Could be a structure, a worker or a military unit.
| enum sc2::Unit::Alliance |
Unit cloak state.
| Enumerator | |
|---|---|
| Cloaked | Cloaked, invisible to enemies until detected. |
| CloakedDetected | Cloaked enemy, but detected. |
| NotCloaked | No cloaking. |
| Unknown | Could not determine cloaking state. |


‘Professional Smokeshow’ Kindly Myers Slips Into Skimpy Daisy Dukes To Show Off Her ‘Badonkadonk’
November 24, 2019
‘Professional Smokeshow’ Kindly Myers Slips Into Skimpy Daisy Dukes To Show Off Her ‘Badonkadonk’
Kindly Myers rocked a pair of barely-there Daisy Dukes in her latest Instagram photo over the weekend, proving exactly why she’s deemed herself a “professional smokeshow.”
In the photo, Kindly looked like a blonde bombshell as she wore the impossibly short denim, which she paired with a white lace crop top. The ensemble flaunted the bikini model’s toned arms, tiny waist, long, lean legs, and curvy “badonkadonk” for all to see.

The model wore her long, blond hair parted to the side and styled in loose, straight strands, which she pushed over her shoulder. Kindly also rocked a full face of makeup in the snap, opting for defined eyebrows, long lashes, and black eyeliner.
In the background of the shot tons of green foliage can be seen as Kindly appears to be sitting on some kind of motorized equipment.
The model’s over 1.8 million followers certainly seemed to approve of the photo, clicking the like button over 20,000 times and leaving more than 340 comments in less than 24 hours after the pictures was shared on social media.
“You’re all I need, you’re the happiness the pulse of my heart,” one of Kindly’s Instagram followers wrote in the comments section of the post.

“Wow, you are the hottest woman on the planet,” another fan gushed over the model.
“Lord have mercy how’d she even get them britches on,” a fourth comment read.
Loading...
Of course, Kindly’s followers are used to seeing the blond beauty scantily clad in her photos as she often posts snaps of herself in tiny bikinis, barely-there dresses, reveling bodysuits, and often goes completely nude in her photos.
As previously reported by The Inquisitr, Kindly recently shared a picture of herself rocking a black thong one-piece as she laid on the floor of her bedroom while leaving little to the imagination.
“Just let me live,” she captioned the photo as she ran her fingers through her hair.
Kindly Myers’ fans didn’t slouch when it came to showing their appreciation for that snap, which currently boasts over 16,000 likes and more than 240 comments to date.


EMOTCHA
secure forms. delivered.
An emotion based CAPTCHA that follows basic framework of object/image based CAPTCHA wherein the users are required to identify and click on images that portray a specific sequence of images.
EMOTCHA
HOME
DOCS
SAMPLE
REGISTER
SIGNIN


Quantitative real-time gene expression analysis of hub proteins encoding genes in PBMCs from control vs. PD. a B2M, b TARDBP, c EFEMP2, d MMP9, e MEAF2A relating copper, magnesium, aluminum, calcium, and iron, respectively. The gene expression of f SOD1, and g hsCRP are the markers for PD. Bars represent the Average, standard deviation (SD) with * P value < 0.05.


Renaming an Object
You can change the name of an object in several different ways:
You can also change an object's name in the Contents View by typing in a new value and hitting Enter, Tab, or an arrow key. To edit the existing name just hit F2.
Note: Names do not need to be unique, even if you are using a link property and link to an object with a duplicate name.


Could you help me with my homework?
Could you help me find my friend?
Could you help me lift this?
Could you help me blow up this ballon?
Do you need any help/assistance doing your homework?
Do you need any help/assistance finding your friend?
Do you need any help/assistance lifting that?
Do you need any help/assistance blowing up that ballon?
Thank you, but I do not need any help
Thank you, but I can do this by myself
Thank you, but I got this
Thank you, but I'm fine
Help!
Help Me!
Please Help Me!


--- layout: post title: Pet Peeve - Social Network Edition date: '2011-09-06 21:52:44 -0700' mt_id: 1464 blog_id: 1 post_id: 1464 basename: pet-peeve-social-network-edition categories: - observations ---
Pascal's Wager of Social Networking: setting up integrations so that posts on one social network automatically get cross-posted to every other social network.
GAH! If you can't pick one place for me to read your content, I will pick one place where I will follow you and hide all of the others.


Hi, I am John Mogi.
A Devops & Full Stack Developer.
I am passionate about building scalable, secure, and reliable systems.
Devops Projects
Password Validator
In this project, I was responsible for building a password validator using both Bash and Powershell.
- Bash
- PowerShell
- Python
- Git
From Terraform to Azure Cloud
In this project I deploy 2 enviroments into azure cloud using terraform. with Infracost we can see the price change between the 2 different enviroments. last but not least it's a complete network with a load balanced into a private and public subnets.
- Terraform
- Infracost
- Azure Cloud
Fullstack Projects
Angular Marketplace
this is a full blown ecommerce angular site I built and devised from scratch, using Angular and mysql database with express nodeJs.
- Material UI
- TypeScript
- Angular
- Redux
I am also highly passionate about web-design, wordpress elementor and project managment.
Check out my Wordpress portfolioDevops
- IAC
- Ansible
- Bash
- Docker
- Azure Cloud
- Azure Devops
- CI/CD
- Git
- Terraform
Full Stack
- HTML
- SCSS
- JavaScript
- TypeScript
- React
- Angular
- Strapi
- Mongo
- PostgreSql
- Mysql


# -*- coding: utf-8 -*- """ requests.adapters ~~~~~~~~~~~~~~~~~ This module contains the transport adapters that Requests uses to define and maintain connections. """ import os.path import socket from pip._vendor.urllib3.poolmanager import PoolManager, proxy_from_url from pip._vendor.urllib3.response import HTTPResponse from pip._vendor.urllib3.util import parse_url from pip._vendor.urllib3.util import Timeout as TimeoutSauce from pip._vendor.urllib3.util.retry import Retry from pip._vendor.urllib3.exceptions import ClosedPoolError from pip._vendor.urllib3.exceptions import ConnectTimeoutError from pip._vendor.urllib3.exceptions import HTTPError as _HTTPError from pip._vendor.urllib3.exceptions import MaxRetryError from pip._vendor.urllib3.exceptions import NewConnectionError from pip._vendor.urllib3.exceptions import ProxyError as _ProxyError from pip._vendor.urllib3.exceptions import ProtocolError from pip._vendor.urllib3.exceptions import ReadTimeoutError from pip._vendor.urllib3.exceptions import SSLError as _SSLError from pip._vendor.urllib3.exceptions import ResponseError from pip._vendor.urllib3.exceptions import LocationValueError from .models import Response from .compat import urlparse, basestring from .utils import (DEFAULT_CA_BUNDLE_PATH, extract_zipped_paths, get_encoding_from_headers, prepend_scheme_if_needed, get_auth_from_url, urldefragauth, select_proxy) from .structures import CaseInsensitiveDict from .cookies import extract_cookies_to_jar from .exceptions import (ConnectionError, ConnectTimeout, ReadTimeout, SSLError, ProxyError, RetryError, InvalidSchema, InvalidProxyURL, InvalidURL) from .auth import _basic_auth_str try: from pip._vendor.urllib3.contrib.socks import SOCKSProxyManager except ImportError: def SOCKSProxyManager(*args, **kwargs): raise InvalidSchema("Missing dependencies for SOCKS support.") DEFAULT_POOLBLOCK = False DEFAULT_POOLSIZE = 10 DEFAULT_RETRIES = 0 DEFAULT_POOL_TIMEOUT = None class BaseAdapter(object): """The Base Transport Adapter""" def __init__(self): super(BaseAdapter, self).__init__() def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest <PreparedRequest>` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) <timeouts>` tuple. :type timeout: float or tuple :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. """ raise NotImplementedError def close(self): """Cleans up adapter specific items.""" raise NotImplementedError class HTTPAdapter(BaseAdapter): """The built-in HTTP Adapter for urllib3. Provides a general-case interface for Requests sessions to contact HTTP and HTTPS urls by implementing the Transport Adapter interface. This class will usually be created by the :class:`Session <Session>` class under the covers. :param pool_connections: The number of urllib3 connection pools to cache. :param pool_maxsize: The maximum number of connections to save in the pool. :param max_retries: The maximum number of retries each connection should attempt. Note, this applies only to failed DNS lookups, socket connections and connection timeouts, never to requests where data has made it to the server. By default, Requests does not retry failed connections. If you need granular control over the conditions under which we retry a request, import urllib3's ``Retry`` class and pass that instead. :param pool_block: Whether the connection pool should block for connections. Usage:: >>> import requests >>> s = requests.Session() >>> a = requests.adapters.HTTPAdapter(max_retries=3) >>> s.mount('http://', a) """ __attrs__ = ['max_retries', 'config', '_pool_connections', '_pool_maxsize', '_pool_block'] def __init__(self, pool_connections=DEFAULT_POOLSIZE, pool_maxsize=DEFAULT_POOLSIZE, max_retries=DEFAULT_RETRIES, pool_block=DEFAULT_POOLBLOCK): if max_retries == DEFAULT_RETRIES: self.max_retries = Retry(0, read=False) else: self.max_retries = Retry.from_int(max_retries) self.config = {} self.proxy_manager = {} super(HTTPAdapter, self).__init__() self._pool_connections = pool_connections self._pool_maxsize = pool_maxsize self._pool_block = pool_block self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block) def __getstate__(self): return {attr: getattr(self, attr, None) for attr in self.__attrs__} def __setstate__(self, state): # Can't handle by adding 'proxy_manager' to self.__attrs__ because # self.poolmanager uses a lambda function, which isn't pickleable. self.proxy_manager = {} self.config = {} for attr, value in state.items(): setattr(self, attr, value) self.init_poolmanager(self._pool_connections, self._pool_maxsize, block=self._pool_block) def init_poolmanager(self, connections, maxsize, block=DEFAULT_POOLBLOCK, **pool_kwargs): """Initializes a urllib3 PoolManager. This method should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param connections: The number of urllib3 connection pools to cache. :param maxsize: The maximum number of connections to save in the pool. :param block: Block when no free connections are available. :param pool_kwargs: Extra keyword arguments used to initialize the Pool Manager. """ # save these values for pickling self._pool_connections = connections self._pool_maxsize = maxsize self._pool_block = block self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block, strict=True, **pool_kwargs) def proxy_manager_for(self, proxy, **proxy_kwargs): """Return urllib3 ProxyManager for the given proxy. This method should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param proxy: The proxy to return a urllib3 ProxyManager for. :param proxy_kwargs: Extra keyword arguments used to configure the Proxy Manager. :returns: ProxyManager :rtype: urllib3.ProxyManager """ if proxy in self.proxy_manager: manager = self.proxy_manager[proxy] elif proxy.lower().startswith('socks'): username, password = get_auth_from_url(proxy) manager = self.proxy_manager[proxy] = SOCKSProxyManager( proxy, username=username, password=password, num_pools=self._pool_connections, maxsize=self._pool_maxsize, block=self._pool_block, **proxy_kwargs ) else: proxy_headers = self.proxy_headers(proxy) manager = self.proxy_manager[proxy] = proxy_from_url( proxy, proxy_headers=proxy_headers, num_pools=self._pool_connections, maxsize=self._pool_maxsize, block=self._pool_block, **proxy_kwargs) return manager def cert_verify(self, conn, url, verify, cert): """Verify a SSL certificate. This method should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param conn: The urllib3 connection object associated with the cert. :param url: The requested URL. :param verify: Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: The SSL certificate to verify. """ if url.lower().startswith('https') and verify: cert_loc = None # Allow self-specified cert location. if verify is not True: cert_loc = verify if not cert_loc: cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) if not cert_loc or not os.path.exists(cert_loc): raise IOError("Could not find a suitable TLS CA certificate bundle, " "invalid path: {}".format(cert_loc)) conn.cert_reqs = 'CERT_REQUIRED' if not os.path.isdir(cert_loc): conn.ca_certs = cert_loc else: conn.ca_cert_dir = cert_loc else: conn.cert_reqs = 'CERT_NONE' conn.ca_certs = None conn.ca_cert_dir = None if cert: if not isinstance(cert, basestring): conn.cert_file = cert[0] conn.key_file = cert[1] else: conn.cert_file = cert conn.key_file = None if conn.cert_file and not os.path.exists(conn.cert_file): raise IOError("Could not find the TLS certificate file, " "invalid path: {}".format(conn.cert_file)) if conn.key_file and not os.path.exists(conn.key_file): raise IOError("Could not find the TLS key file, " "invalid path: {}".format(conn.key_file)) def build_response(self, req, resp): """Builds a :class:`Response <requests.Response>` object from a urllib3 response. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>` :param req: The :class:`PreparedRequest <PreparedRequest>` used to generate the response. :param resp: The urllib3 response object. :rtype: requests.Response """ response = Response() # Fallback to None if there's no status_code, for whatever reason. response.status_code = getattr(resp, 'status', None) # Make headers case-insensitive. response.headers = CaseInsensitiveDict(getattr(resp, 'headers', {})) # Set encoding. response.encoding = get_encoding_from_headers(response.headers) response.raw = resp response.reason = response.raw.reason if isinstance(req.url, bytes): response.url = req.url.decode('utf-8') else: response.url = req.url # Add new cookies from the server. extract_cookies_to_jar(response.cookies, req, resp) # Give the Response some context. response.request = req response.connection = self return response def get_connection(self, url, proxies=None): """Returns a urllib3 connection for the given URL. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param url: The URL to connect to. :param proxies: (optional) A Requests-style dictionary of proxies used on this request. :rtype: urllib3.ConnectionPool """ proxy = select_proxy(url, proxies) if proxy: proxy = prepend_scheme_if_needed(proxy, 'http') proxy_url = parse_url(proxy) if not proxy_url.host: raise InvalidProxyURL("Please check proxy URL. It is malformed" " and could be missing the host.") proxy_manager = self.proxy_manager_for(proxy) conn = proxy_manager.connection_from_url(url) else: # Only scheme should be lower case parsed = urlparse(url) url = parsed.geturl() conn = self.poolmanager.connection_from_url(url) return conn def close(self): """Disposes of any internal state. Currently, this closes the PoolManager and any active ProxyManager, which closes any pooled connections. """ self.poolmanager.clear() for proxy in self.proxy_manager.values(): proxy.clear() def request_url(self, request, proxies): """Obtain the url to use when making the final request. If the message is being sent through a HTTP proxy, the full URL has to be used. Otherwise, we should only use the path portion of the URL. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param request: The :class:`PreparedRequest <PreparedRequest>` being sent. :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs. :rtype: str """ proxy = select_proxy(request.url, proxies) scheme = urlparse(request.url).scheme is_proxied_http_request = (proxy and scheme != 'https') using_socks_proxy = False if proxy: proxy_scheme = urlparse(proxy).scheme.lower() using_socks_proxy = proxy_scheme.startswith('socks') url = request.path_url if is_proxied_http_request and not using_socks_proxy: url = urldefragauth(request.url) return url def add_headers(self, request, **kwargs): """Add any headers needed by the connection. As of v2.0 this does nothing by default, but is left for overriding by users that subclass the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param request: The :class:`PreparedRequest <PreparedRequest>` to add headers to. :param kwargs: The keyword arguments from the call to send(). """ pass def proxy_headers(self, proxy): """Returns a dictionary of the headers to add to any request sent through a proxy. This works with urllib3 magic to ensure that they are correctly sent to the proxy, rather than in a tunnelled request if CONNECT is being used. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param proxy: The url of the proxy being used for this request. :rtype: dict """ headers = {} username, password = get_auth_from_url(proxy) if username: headers['Proxy-Authorization'] = _basic_auth_str(username, password) return headers def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest <PreparedRequest>` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) <timeouts>` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies) chunked = not (request.body is None or 'Content-Length' in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError as e: # this may raise a string formatting error. err = ("Invalid timeout {}. Pass a (connect, read) " "timeout tuple, or a single float to set " "both timeouts to the same value".format(timeout)) raise ValueError(err) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: if not chunked: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout ) # Send the request. else: if hasattr(conn, 'proxy_pool'): conn = conn.proxy_pool low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT) try: low_conn.putrequest(request.method, url, skip_accept_encoding=True) for header, value in request.headers.items(): low_conn.putheader(header, value) low_conn.endheaders() for i in request.body: low_conn.send(hex(len(i))[2:].encode('utf-8')) low_conn.send(b'\r\n') low_conn.send(i) low_conn.send(b'\r\n') low_conn.send(b'0\r\n\r\n') # Receive the response from the server try: # For Python 2.7, use buffering of HTTP responses r = low_conn.getresponse(buffering=True) except TypeError: # For compatibility with Python 3.3+ r = low_conn.getresponse() resp = HTTPResponse.from_httplib( r, pool=conn, connection=low_conn, preload_content=False, decode_content=False ) except: # If we hit any problems here, clean up the connection. # Then, reraise so that we can handle the actual exception. low_conn.close() raise except (ProtocolError, socket.error) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) raise ConnectionError(e, request=request) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): raise ReadTimeout(e, request=request) else: raise return self.build_response(request, resp)


In a deposition in 2007, Donald Trump declares,“we will be in Moscow at some point” while touting Russian business prospects. He discussed a deal for a Moscow-based Trump International Hotel and Tower that Bayrock had lined up with Russian investors.
Source: New York Times


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
McQuinn Global Enterprises
Mailing Address:
P.O. Box 178OUTLOOK, Saskatchewan
S0L 2N0
Location Address:
402 Douglas StOUTLOOK, Saskatchewan
S0L 2N0
Tel.:<PHONE_NUMBER>
Fax:
Company Profile
About Us
Biography
For over 35 years McQuinn Enterprises has been establishing a solid reputation of exceptional customer service and craftsmanship through our sole-proprietorship. In 2013 we expanded our company to include online products and services and incorporated under a numbered company in Saskatchewan. Since that time we have added a Family Marketplace with over 1,000,000 products within thousands of online and local store and companies world wide, and renewed and expanded our online ministry and charitable portfolio serving over 130,000 charities. Owr website www.mcq-global.ca provides a gateway to all of our products and services. For more information on our company and how we can help you, your family, church and business please feel free to join our large network now.
www.mcq-global.ca
Corporate Business Info
101247283 Saskatchewan Ltd.
Business Number: 82591 4039 RT0001
c/o Don and Lois McQuinn
+1<PHONE_NUMBER>
P. O. Box 178 402 Douglass Street Outlook, SK S0L 2N0
<EMAIL_ADDRESS>Online and Offline Services
Charitable and Business Web services.
Serving the Apostolic and Christian Church for over 30 years, M.G.E. now provides exceptional online products and services to equip the church for evangelism and promotion. Providing the apostolic community with websites, web development, web design, hosting, video streaming and broadcasting and fundraising for charitable projects.
MGE also provides a unique advertising and promotional atmosphere for businesses to promote their charitable work and their business projects and company at a reasonable cost.
Online Family Market Place
M.G.E. now provides a unique members only marketplace. The Family Marketplace provides savings of 10-90% off everyday products from groceries delivered right to your door to Christian Videos and Complete Timber Frame Housing Packages the Marketplace has much to offer everyone.. With millions of products at exceptional savings we do all the hard work to provide daily savings from our our carefully selected companies to give you exception service and products, we we are able to save more we are able to give more.
The market place also provides a place for qualified business to market their Family Friendly products.
The Christian Sponsorship Program
Our Christian Sponsorship program provides churches, charities and ministries with monthly residual income and a solid fundraising program while promoting current projects and ministries. Excellent for home and abroad, help us now to fund and support, missionaries, charities, churches, orphan and those in need world wide.
The CSP currently has hosting space for over 700 Apostolic organizations representing over 279,000,000 million world wide.
We also have a number of large Charitable organization that we fund raise for such as; Red cross, World vision, Breast Cancer research and more. Any Charity can be added that is family based with respect for traditional Christian values.
Carpentry
With over 35 years experience in new home construction, renovations and supplying New Home Warranty for various builders, Don’s carpentry has been an award winner in customer service and quality craftsmanship. The newly formed business and home maintenance program called “Mr.Fix-it” is currently servicing Outlook and Area.
Homes PLUS+
Homes PLUS+ is a complete 3rd party independent new Home Owners Consulting Program. Homes PLUS+ provides a complete home evaluation program for Home Owners wishing to purchaser a new home, who have just completed a build or who need help when selling. Working as a Home Warranty technician with various builders for over 9 years we take the home owner through a complete “walk through” identifying both cosmetic and structural issues that could arise from your home – ensuring you receive all the benefits of your New Home Warranty program through your builder and saving your builder on what could become later expensive warranty claims
Outlook Gospel Lighthouse
Our physical ministry location, business and home. In operation since 1997 serving Outlook and Area as a home mission Apostolic Pentecostal organization and Registered Charity and internationally online.
Legal Information:https://www.mcq-global.ca/mge-corporate/
Terms and Conditions
https://www.mcq-global.ca/mge-corporate/
Privacy Policy
https://www.mcq-global.ca/mge-corporate/
Abuse Policy
https://www.mcq-global.ca/mge-corporate/
Anti-Spam Policy
https://www.mcq-global.ca/mge-corporate/
Staying Safe in the MGE-Network
https://www.mcq-global.ca/mge-corporate/
The MGE Network site is hosted on Canadian Servers for additional security and protection.
rebel-ca-flaghttps://www.rebel.ca/
The MGE- Network is serviced by:
BMO - Bank of Montreal Canada
Internet Financial Payment Gateways: Authorize.net, Evalon, and Paypal Canada
Full profile
Full profile
Contact information
Company description
518210 - Data Processing, Hosting, and Related Services
519130 - Internet Publishing and Broadcasting, and Web Search Portals
611690 - All Other Schools and Instruction
Product / Service / Licensing
For a complete overview of all of the services and products provided please visit: https://www.mcq-global.ca/membership-account/membership-levels/
MGE-Customer/Supporter Membership - $9.95/month
As a customer and supporter you help to financially support the Charity of your choice while shopping and experiencing extreme savings ( 10-98% Off) at the Family Market place.
Through the MGE-Family Market place, MGE gives access to solid, ethical online and local companies with excellent sales and service to promote their products and services, you choose where and when to shop based on your needs. No minimum purchase required for membership.
Monthly Family Market membership fee for a customer/charitable supporter MGE-Membership $9.95/month
Business/Charity Sales Associates within McQuinn Global Enterprise receive:
1) Access to all McQuinn Global Enterprise Sites and Affiliate area
2) Ability to access all retail products and to earn commission from membership sales sold within the MCQUINN GLOBAL ENTERPRISE Family Market earning a base commission of 10-30%
3) The ability to purchase fundraising accounts to fundraise on behalf of charity Funded accounts are $9.95/month
4) Url for personal sales and access to URL of funded accounts for promoting your charity fundraising.
5) Full advertising pages with social links and links to your charity.
Monthly fee for a MGE-Network Business/Charity Membership $19.95/month
Provides labour contracts for home and office renovations and repairs at $25.00/hr.
Maintenance & Repair
*Door and window adjustments/repairs
Bi-fold door adjust and repair
Adjust sticking and rubbing doors
Adjust doors that don’t latch properly
Door knobs, hinges and hardware
Adjust garage doors & openers
Weather stripping and threshold sweeps
Kitchen and bath cabinet doors and drawers
Storm doors installed, repaired or adjusted
Window cranks
Screen replacement/repair
Security bars added to basement windows
Storm door chains added to garden doors
Exterior door stops for garden doors
Bath
Caulk tubs and showers
Caulk vanities
Caulk baseboards
Towel bar repairs
Shower heads
Toilet repairs
Grab bars installed
Bathroom fan repairs
Shower rods
Replace toilets
Enamel chips repaired
Slow draining sinks repaired
Mechanical drain adjustments
Kitchens
Cabinet doors and drawers adjusted
Counter tops caulked
Toe kicks repaired
Floors
Squeaky floors and stairs repaired
Stairs, steps, decks & railing repairs
Seam seal Lino flooring nicks
Flooring threshold strips
Drywall repair
*Textured ceilings and repairs
*Truss uplift repairs
Screw pops
Cracked corner beads
Wall cracks
Wall damage repairs
Repairs after water damage
Textured ceiling water stain repairs
Door knob holes etc. repaired
Painting
Paint repairs (not full wall if possible)
Front doors and sidelights
Interior painting
Exterior
Caulking
Siding repairs
Roofing
Fences/Gates repaired
Cloths line, poles and pulleys
Minor Electrical
Tighten loose plugs and switches
Replace missing covers
Change high or difficult light bulbs
Replace outdated or faulty smoke detectors
Other
Curtain rods installed and repaired
*HRV/Air exchanger operation
Air exchanger filters
Furnace filter replacement
Dryer vents
Product assembly & installations
Minor furniture repairs
Re-key Weiser door locks
(Smart key or older)
Replace/upgrade deadbolts and locks
Upgrade interior door hardware
Sump pump check and replacement
Lubricate squeaky hinges
Repair or replace loose or missing parts
This is by all means a suggestive list only!
!
* Some specialties are doors, textured ceiling repairs, truss uplift repairs and humidity problems!
Do you get moisture on you windows in winter?
The Lighthouse was established in Outlook, SK on March 15, 1997.
Started by Rev. and Mrs. Donald McQuinn and their two children, Mitchell and Victoria, the Lighthouse has seen many changes from the original family house meetings to services now being held in this historic church building. With over 50 baptisms throughout Saskatchewan the Lighthouse is experiencing steady, solid growth.
The Lighthouse is an Apostolic Pentecostal church whose purpose is to…
Exalt the Lord
Edify the Saints
Evangelize our Community.
Worship, the Word and Godly fellowship along with much prayer, fasting and intercession have been the backbone of this church.
Service after service the powerful presence of the Lord can be felt in this humble building as people worship freely, through singing, speaking in tongues, raising their hands, dancing, walking, leaping and all other forms of Biblical worship.
The Lighthouse also has a deep concern for those who are hurting and in pain; caring and compassion without judgement or condemnation has given folks the support and courage needed to completely surrender their lives to the Lord, and has lead to people being delivered from alcohol, drugs, and other immoral life styles.
The changes that Jesus has made in many lives has been beautiful and the testimonies are incredible.
If you would like to join the Lighthouse for a service and see the glory of the Lord in action our services are held at:
402 Douglas Street
Outlook, SK
Service times are:
Sunday Morning: 10:30 am – Family Worship
Sunday 12:00 – Fellowship Dinner
Sunday 1:00 – Adult Sunday School.
If you have any questions about the Lighthouse please don’t hesitate to call:
306-867-9193
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
518210 - Data Processing, Hosting, and Related Services
519130 - Internet Publishing and Broadcasting, and Web Search Portals
611690 - All Other Schools and Instruction
Products, services and licensing
Product / Service / Licensing
For a complete overview of all of the services and products provided please visit: https://www.mcq-global.ca/membership-account/membership-levels/
MGE-Customer/Supporter Membership - $9.95/month
As a customer and supporter you help to financially support the Charity of your choice while shopping and experiencing extreme savings ( 10-98% Off) at the Family Market place.
Through the MGE-Family Market place, MGE gives access to solid, ethical online and local companies with excellent sales and service to promote their products and services, you choose where and when to shop based on your needs. No minimum purchase required for membership.
Monthly Family Market membership fee for a customer/charitable supporter MGE-Membership $9.95/month
Business/Charity Sales Associates within McQuinn Global Enterprise receive:
1) Access to all McQuinn Global Enterprise Sites and Affiliate area
2) Ability to access all retail products and to earn commission from membership sales sold within the MCQUINN GLOBAL ENTERPRISE Family Market earning a base commission of 10-30%
3) The ability to purchase fundraising accounts to fundraise on behalf of charity Funded accounts are $9.95/month
4) Url for personal sales and access to URL of funded accounts for promoting your charity fundraising.
5) Full advertising pages with social links and links to your charity.
Monthly fee for a MGE-Network Business/Charity Membership $19.95/month
Provides labour contracts for home and office renovations and repairs at $25.00/hr.
Maintenance & Repair
*Door and window adjustments/repairs
Bi-fold door adjust and repair
Adjust sticking and rubbing doors
Adjust doors that don’t latch properly
Door knobs, hinges and hardware
Adjust garage doors & openers
Weather stripping and threshold sweeps
Kitchen and bath cabinet doors and drawers
Storm doors installed, repaired or adjusted
Window cranks
Screen replacement/repair
Security bars added to basement windows
Storm door chains added to garden doors
Exterior door stops for garden doors
Bath
Caulk tubs and showers
Caulk vanities
Caulk baseboards
Towel bar repairs
Shower heads
Toilet repairs
Grab bars installed
Bathroom fan repairs
Shower rods
Replace toilets
Enamel chips repaired
Slow draining sinks repaired
Mechanical drain adjustments
Kitchens
Cabinet doors and drawers adjusted
Counter tops caulked
Toe kicks repaired
Floors
Squeaky floors and stairs repaired
Stairs, steps, decks & railing repairs
Seam seal Lino flooring nicks
Flooring threshold strips
Drywall repair
*Textured ceilings and repairs
*Truss uplift repairs
Screw pops
Cracked corner beads
Wall cracks
Wall damage repairs
Repairs after water damage
Textured ceiling water stain repairs
Door knob holes etc. repaired
Painting
Paint repairs (not full wall if possible)
Front doors and sidelights
Interior painting
Exterior
Caulking
Siding repairs
Roofing
Fences/Gates repaired
Cloths line, poles and pulleys
Minor Electrical
Tighten loose plugs and switches
Replace missing covers
Change high or difficult light bulbs
Replace outdated or faulty smoke detectors
Other
Curtain rods installed and repaired
*HRV/Air exchanger operation
Air exchanger filters
Furnace filter replacement
Dryer vents
Product assembly & installations
Minor furniture repairs
Re-key Weiser door locks
(Smart key or older)
Replace/upgrade deadbolts and locks
Upgrade interior door hardware
Sump pump check and replacement
Lubricate squeaky hinges
Repair or replace loose or missing parts
This is by all means a suggestive list only!
!
* Some specialties are doors, textured ceiling repairs, truss uplift repairs and humidity problems!
Do you get moisture on you windows in winter?
The Lighthouse was established in Outlook, SK on March 15, 1997.
Started by Rev. and Mrs. Donald McQuinn and their two children, Mitchell and Victoria, the Lighthouse has seen many changes from the original family house meetings to services now being held in this historic church building. With over 50 baptisms throughout Saskatchewan the Lighthouse is experiencing steady, solid growth.
The Lighthouse is an Apostolic Pentecostal church whose purpose is to…
Exalt the Lord
Edify the Saints
Evangelize our Community.
Worship, the Word and Godly fellowship along with much prayer, fasting and intercession have been the backbone of this church.
Service after service the powerful presence of the Lord can be felt in this humble building as people worship freely, through singing, speaking in tongues, raising their hands, dancing, walking, leaping and all other forms of Biblical worship.
The Lighthouse also has a deep concern for those who are hurting and in pain; caring and compassion without judgement or condemnation has given folks the support and courage needed to completely surrender their lives to the Lord, and has lead to people being delivered from alcohol, drugs, and other immoral life styles.
The changes that Jesus has made in many lives has been beautiful and the testimonies are incredible.
If you would like to join the Lighthouse for a service and see the glory of the Lord in action our services are held at:
402 Douglas Street
Outlook, SK
Service times are:
Sunday Morning: 10:30 am – Family Worship
Sunday 12:00 – Fellowship Dinner
Sunday 1:00 – Adult Sunday School.
If you have any questions about the Lighthouse please don’t hesitate to call:
306-867-9193